ویرگول
ورودثبت نام
بهزاد عزیزان
بهزاد عزیزان
خواندن ۲ دقیقه·۴ سال پیش

امکان جالبی به عنوان laravel Stub


سلام چند ماه بود میخواستم این پست رو منتشر کنم اما فرصتش پیش نمیومد.

معمولا توی تمام پروژه هامون پیش میاد که یه زیر ساختی رو اول توسعه ی پروژه تعریف میکنیم و بعد در طی روند توسعه ، کد نویسی در قالب اون زیرساخت انجام میشه.

این زیرساخت بسته به پروژه و نبوغ و دانش فنی تیم میتونه متفاوت باشه. اما خب معمولا توی اکثر پروژه ها ما یه BaseClass برای کلاس های مختلفمون میسازیم . مثلا من خودم همیشه اولین کاری که میکنم اینه که یه BaseModel ، BaseController ، ‌BaseRequest و ... میسازم و تمام کلاس ها رو از این اجزا اکستند میکنم.

ممکنه حتی اول کار این کلاس ها خالی باشن ولی قطعا بعد از مدتی ممکنه یه متد ها یا پراپرتی های مشترکی بین تمام کنترلر ها، مدل ها و ... نیاز بشه.


بعد از این باید به تمام اعضای تیم توضیح بدم که تمام مدل ها باید به جای کلاس Model از BaseModel اکستند بشه و به همین طریق کنترلر ها و ...


خب این موضوع یه کار روتین به اعضای تیم تحمیل میکنه . همون طور که میدونید مثلا تمام مدل های لاراول به صورت پیش فرض از کلاسی به نام Illuminate\Database\Eloquent\Model اسکتند میشه . خب ما میخوایم از BaseModel اکستند بشه به جای این کلاس!

خب یه راه خسته کننده و روتین اینه که باید به صورت دستی بریم و از کلاس خودمون اکستند کنیم . خب ممکنه مشکلاتی مثل اشتباه یا فراموشی پیش بیاد !

حالا جریان stub چی هست؟

شاید براتون سوال پیش اومده باشه که وقتی دستور

php artisan make:model Foo

رو توی ترمینال میزنید artisan چطوری ساختار کد مدل Foo رو میسازه و شاید دوست داشته باشید محتوای اجزای تولید شده رو وقتی با این دستور کار میکنید اختصاصی کنید.

لاراول برای ساخت اجزایی که با دستور make آرتیسان تولید میشن، از قالب‌هایی با نام stub الگو برداری میکنه. یعنی مثلا برای ایجاد مدل یک فایل متنی به نام model.stub وجود داره که لاراول برای ساخت هر مدل دقیقا از محتویات این فایل استفاده میکنه . حالا هر محتوایی که داخل این فایل باشه رو توی کلاسی که ساختید هم هست. در واقع stub ها یه الگو هستن

این امکان توی نسخه های قبلی لاراول هم بوده اما به صورت داخلی استفاده میشده و امکان ویرایش اونها برای دولوپر ها وجود نداشته به این سادگی ها. اما از نسخه 7 به بعد این امکان فراهم شد که به راحتی بتونیم این الگوها رو کاستومایز کنیم. چی ازین بهتر!


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

php artisan stub:publish

بعد از اجزای این دستور توی روت پروژه دایرکتوری به نام stubs ساخته میشه که فایل های مختلفی با پسوند .stub وجود داره .

همه چیز به همین راحتی قابل تغییر هست!

لاراولlaravel
برنامه نویس php . میخوام از علایقم بنویسم
شاید از این پست‌ها خوشتان بیاید