Jacob Bennett یک نظرسنجی در توئیتر گذاشت تا ببینه جامعه ی توسعه دهندگان از چه روشی برای صدا زدن آدرس های URL در اپلیکیشن لاراولی خود استفاده می کنند. با 500 رای, نزدیک به 77 درصد توسعه دهندگان به متد کمکی ()route رای دادند.
این موضوع برای من یک سورپرایز بود, چون من معمولا از استایل رشته URL استفاده می کردم, این باعث شد من به مستندات مراجعه کنم و نگاهی به استایل های مختلفی که میتونه در پروژه بکار بیاد, بیاندازم. بیایید درمورد مزایا و معایب هر استایل صحبت کنیم.
Laravel Action Helper
action('UserController@profile', ['id' => 1])
// http://site.dev/user/profile/1
مزایا : نتیجه به کنترلر و نام متد شما گره خورده, بنابراین لازم نیست شما هر مسیر رو جداگانه نامگذاری کنید.
معایب : بزرگترین مشکل اینه که شما باید برای تمام مسیر ها تعداد زیادی کاراکتر تایپ کنید. مشکل دوم و بدتر اینه که اگر شما بخواید کنترلر یا نام متد رو عوض کنید, به دنبالش شما باید تغییرات زیادی برای مسیرها اعمال کنید.
Laravel Route Helper
route('user.profile', ['id' => 1])
// http://site.dev/user/profile/1
مزایا : این استایل به نام مسیر گره خورده, اگر شما نام کنترلر یا متد رو عوض کنید مشکلی پیش نمیاد.
معایب : شما باید هر مسیر رو نامگذاری کنید.
Laravel URL Helper
url('user/profile', [1])
// http://site.dev/user/profile/1
مزایا : شبیه دوتای قبلی, متد کمکی URL بصورت خودکار نام کامل دامنه ای که در config/app.php قرار دادید رو فراهم میکنه. مزایای این استایل نسبت به بقیه اینه که این راحتتره. شما نیازی ندارید نام مسیرها یا حتی کنترلرها رو تعریف کنید.
معایب : اگر شما مسیرها رو عوض کنید, باید هرجایی که از این متد استفاده کردید رو هم اصلاح کنید.
URL String
href="/user/profile/{{ $user->id }}"
// href="/user/profile/1"
مزایا : این همان مزایای متد URL رو داره. سادست و راحت میشه ازش استفاده کرد و شبیه استاندارد HTML هست.
معایب : این روش آدرس دامنه ی سایت رو شامل نمیشه. پس شما باید بدونید اپلیکیشن کجا اجرا میشه و در یک زیرمسیر وجود نداره.
سایر راه حل های URL
خارج از راه های معمول که در بالا اشاره کردیم, چند مدل برای تولید url وجود دارد. برای مثال فرض کنید می خواهید یک وبلاگ بسازید, و شما URL برای جزئیات پست رو در فرمت “yyyy/mm/slug” می خواهید. یک نکته استفاده از model accessor هست :
public function getUriAttribute($_)
{
return $this->created_at->format('Y/m/').$this->slug.'/';
}
سپس در فایل blade بصورت زیر :
<a href="{{ $post->uri }}">{{ $post->title }}</a>
حالا شما میتونید براحتی لینک پست رو تغییر بدید.
نتیجه گیری
با وجود تمام استایل های مختلف برای URL ها, کدامیک برای پروژه شما مناسبه؟ درحقیقت بهترین گزینه وجود نداره, و پاسخ بستگی به شما, تیم شما و اپلیکیشنی که می خواهید بسازید, دارد. برای مثال بهترین گزینه برای اپلیکیشن های با سایز کوچک و متوسط استفاده از استایل string بود.
اگر خواستید به تیم بزرگتری بروید و اپ های بزرگتر بسازید, بنظرم استایل های action و route گزینه های بهتری هستند.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید