استفاده از نماهای لاراول برای کدهای تمیزتر و قابل آزمایش

بنا به دلایلی، نماهای لاراول چندان مورد توجه قرار نمی گیرند. من اغلب می خوانم که چگونه آنها یک اجرای واقعی نما نیستند، و اجازه دهید به شما بگویم، آنها نیستند 🤷. آنها بیشتر شبیه به پروکسی هستند تا نما. اگر در مورد آن فکر کنید، آنها به سادگی تماس ها را به کلاس های مربوطه خود ارسال می کنند و به طور موثر درخواست را رهگیری می کنند. وقتی شروع به نگاه کردن به آن‌ها به این شکل می‌کنید، متوجه می‌شوید که نماها، زمانی که به درستی استفاده شوند، می‌توانند به کدی تمیز و قابل آزمایش منجر شوند. بنابراین، خیلی خود را درگیر نامگذاری نکنید، منظورم این است که چه کسی اهمیت می دهد که نام آنها چیست؟ و بیایید ببینیم چگونه می توانیم از آنها استفاده کنیم.

همان-همان، اما متفاوت… اما همچنان همان 😎

هنگام نوشتن کلاس های سرویس، من طرفدار استفاده از روش های استاتیک نیستم، آنها کلاس های وابسته را تست می کنند سخت. با این حال، من عاشق تماس های تمیزی هستم که آنها ارائه می دهند، مانند Service::action(). با نماهای بلادرنگ لاراول می توانیم به این مهم دست یابیم.

بیایید نگاهی به این مثال بیندازیم:

failed(), CouldNotFetchRates::apiTimeout('ecb'));

        return ExchangeRate::from($response-body());
    }
}

ما یک کلاس خدمات بسیار ساده داریم که سعی می‌کند نرخ‌های مبادله را از یک API بازیابی کند و اگر همه چیز خوب پیش رفت، DTO (نهاد یا هر چیزی که شما را خوشحال می‌کند) برمی‌گرداند.

اکنون می توانیم از این سرویس به شکل زیر استفاده کنیم:

ممکن است کد تمیز به نظر برسد، اما خوب نیست. قابل آزمایش نیست ما میتوانیم بنویسیم…

Source link