نسخه:

توسعه بسته

معرفی

بسته ها راه اصلی اضافه کردن قابلیت به لاراول هستند. بسته‌ها ممکن است هر چیزی باشند، از یک روش عالی برای کار با تاریخ‌هایی مانند کربن یا یک چارچوب آزمایشی کامل BDD مانند Behat .

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

از سوی دیگر، بسته های دیگر به طور خاص برای استفاده با لاراول در نظر گرفته شده اند. این بسته‌ها ممکن است مسیرها، کنترل‌کننده‌ها، نماها و پیکربندی‌هایی داشته باشند که به‌طور خاص برای بهبود برنامه لاراول در نظر گرفته شده‌اند. این راهنما در درجه اول توسعه مواردی را که مخصوص لاراول هستند پوشش می دهد.

همه بسته‌های لاراول از طریق Packagist و Composer توزیع می‌شوند ، بنابراین یادگیری این ابزارهای فوق‌العاده توزیع بسته PHP ضروری است.

بازدیدها

ساختار داخلی بسته شما کاملاً به شما بستگی دارد. با این حال، معمولاً هر بسته حاوی یک یا چند ارائه دهنده خدمات است . ارائه‌دهنده خدمات شامل هر گونه اتصالات کانتینر سرویس و همچنین دستورالعمل‌هایی در مورد محل قرارگیری پیکربندی بسته، نماها و فایل‌های ترجمه است.

بازدیدها

نماهای بسته معمولاً با استفاده از سینتکس "Namspace" دو نقطه ای ارجاع می شوند:

return view('package::view.name');

تنها کاری که باید انجام دهید این است که به لاراول بگویید نماهای یک فضای نام مشخص در کجا قرار دارند. به عنوان مثال، اگر بسته شما "پیک" نام دارد، می توانید موارد زیر را به boot روش ارائه دهنده خدمات خود اضافه کنید:

public function boot()
{
$this->loadViewsFrom(__DIR__.'/path/to/views', 'courier');
}

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

return view('courier::view.name');

وقتی از این loadViewsFrom روش استفاده می کنید، لاراول در واقع دو مکان را برای نماهای شما ثبت می کند: یکی در فهرست برنامه resources/views/vendor و دیگری در دایرکتوری که شما مشخص کرده اید. بنابراین، با استفاده از مثال ما courier : هنگام درخواست نمای بسته، لاراول ابتدا بررسی می کند که آیا یک نسخه سفارشی از view توسط توسعه دهنده در ارائه شده است یا خیر resources/views/vendor/courier . سپس، اگر نمای شخصی سازی نشده باشد، لاراول دایرکتوری نمای بسته را که در تماس خود با آن مشخص کرده اید جستجو می کند loadViewsFrom . این امر باعث می‌شود تا کاربران نهایی بتوانند نماهای بسته شما را سفارشی یا نادیده بگیرند.

انتشار نماها

برای انتشار نماهای بسته خود در دایرکتوری resources/views/vendor ، باید publishes از روش boot ارائه دهنده خدمات خود استفاده کنید:

public function boot()
{
$this->loadViewsFrom(__DIR__.'/path/to/views', 'courier');
 
$this->publishes([
__DIR__.'/path/to/views' => base_path('resources/views/vendor/courier'),
]);
}

اکنون، زمانی که کاربران بسته شما دستور لاراول را اجرا می کنند vendor:publish ، دایرکتوری views شما در مکان مشخص شده کپی می شود.

اگر می‌خواهید فایل‌های موجود را بازنویسی کنید، از --force سوئیچ استفاده کنید:

php artisan vendor:publish --force

توجه: می توانید از این publishes روش برای انتشار هر نوع فایلی در هر مکانی که می خواهید استفاده کنید.

ترجمه ها

فایل‌های ترجمه بسته معمولاً با استفاده از نحو دو دونقطه ارجاع می‌شوند:

return trans('package::file.line');

تنها کاری که باید انجام دهید این است که به لاراول بگویید ترجمه های یک فضای نام مشخص در کجا قرار دارند. به عنوان مثال، اگر بسته شما "پیک" نام دارد، می توانید موارد زیر را به boot روش ارائه دهنده خدمات خود اضافه کنید:

public function boot()
{
$this->loadTranslationsFrom(__DIR__.'/path/to/translations', 'courier');
}

توجه داشته باشید که در translations پوشه خود، دایرکتوری های بیشتری برای هر زبان خواهید داشت، مانند en ،،، و غیره es . ru

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

return trans('courier::file.line');

پیکربندی

به طور معمول، شما می خواهید فایل پیکربندی بسته خود را در config دایرکتوری خود برنامه منتشر کنید. این به کاربران بسته شما اجازه می دهد تا به راحتی گزینه های پیکربندی پیش فرض شما را نادیده بگیرند.

برای انتشار یک فایل پیکربندی، فقط publishes از روش boot ارائه دهنده خدمات خود استفاده کنید:

$this->publishes([
__DIR__.'/path/to/config/courier.php' => config_path('courier.php'),
]);

اکنون زمانی که کاربران بسته شما دستور لاراول را اجرا می کنند vendor:publish ، فایل شما در محل مشخص شده کپی می شود. البته، هنگامی که پیکربندی شما منتشر شد، می توان به آن مانند هر فایل پیکربندی دیگری دسترسی داشت:

$value = config('courier.option');

همچنین می‌توانید فایل پیکربندی بسته خود را با نسخه برنامه ادغام کنید. این به کاربران شما اجازه می‌دهد فقط گزینه‌هایی را که واقعاً می‌خواهند نادیده بگیرند در نسخه منتشر شده پیکربندی قرار دهند. برای ادغام پیکربندی ها، از mergeConfigFrom روش موجود در روش ارائه دهنده خدمات خود استفاده کنید register :

$this->mergeConfigFrom(
__DIR__.'/path/to/config/courier.php', 'courier'
);

دارایی های عمومی

بسته های شما ممکن است دارایی هایی مانند جاوا اسکریپت، CSS و تصاویر داشته باشند. برای انتشار دارایی ها، publishes از روش روش ارائه دهنده خدمات خود استفاده کنید boot . در این مثال، یک تگ گروه دارایی "عمومی" را نیز اضافه می کنیم.

$this->publishes([
__DIR__.'/path/to/assets' => public_path('vendor/courier'),
], 'public');

اکنون زمانی که کاربران بسته شما vendor:publish دستور را اجرا می کنند، فایل های شما در محل مشخص شده کپی می شوند. از آنجایی که معمولاً باید هر بار که بسته به‌روزرسانی می‌شود، دارایی‌ها را بازنویسی کنید، می‌توانید از --force پرچم استفاده کنید:

php artisan vendor:publish --tag=public --force

اگر می خواهید مطمئن شوید که دارایی های عمومی شما همیشه به روز هستند، می توانید این دستور را به post-update-cmd لیست موجود در composer.json فایل خود اضافه کنید.

انتشار گروه های فایل

ممکن است بخواهید گروه هایی از فایل ها را جداگانه منتشر کنید. به عنوان مثال، ممکن است بخواهید کاربران شما بتوانند فایل های پیکربندی بسته و فایل های دارایی را به طور جداگانه منتشر کنند. شما می توانید این کار را با "تگ کردن" آنها انجام دهید:

// Publish a config file
$this->publishes([
__DIR__.'/../config/package.php' => config_path('package.php')
], 'config');
 
// Publish your migrations
$this->publishes([
__DIR__.'/../database/migrations/' => database_path('/migrations')
], 'migrations');

سپس می‌توانید این فایل‌ها را با ارجاع به برچسب آنها به صورت جداگانه منتشر کنید:

php artisan vendor:publish --provider="Vendor\Providers\PackageServiceProvider" --tag="config"

مسیریابی

برای بارگیری یک فایل مسیرها برای بسته خود، include آن را به سادگی از طریق boot روش ارائه دهنده خدمات خود انجام دهید.

شامل فایل مسیرها از یک ارائه دهنده خدمات

public function boot()
{
include __DIR__.'/../../routes.php';
}

توجه: اگر بسته شما از کنترلرها استفاده می کند، باید مطمئن شوید که آنها به درستی در composer.json بخش بارگذاری خودکار فایل شما پیکربندی شده اند.