برای ساخت package لاراول ابتدا فولدر پکیج packages/ را در شخه اصلی (root) لاراول ایجاد می کنیم.
هر پکیج از نام سازنده و نام پکیج تشکیل می شود و باید بر همین مبنا فولدر هایی را در داخل فولدر /packages/ ایجاد کنیم که فولدر اول نام سازنده یا توسعه دهنده است برای مثال laravelcode و فولدر داخل laravelcode هم با نام پکیج ساخته می شود برای مثال jdate که در نهایت چنین دایرکتوری را خواهیم داشت /packages/laravelcode/jdate/
حالا داخل داکیتوری آخر یک فولدر با نام src ایجاد می کنیم : /packages/laravelcode/jdate/src/
برای تمام پکیج ها برای معرفی وابستگی ها () نیاز به ایجاد فایل composer.json داریم و برای این کار داخل فولدر jdate دستور زیر را اجرا می کنیم و سپس اطلاعات لازم را در معرفی پکیج در خط فرمان وارد می کنیم :
composer init
همچنین شما می توانید خودتان بدون استفاده از کامپوزر این فایل را به صورت دستی ایجاد کنید.
متحوی فایل composer.json شبیه به این خواهد بود :
{ "name": "laravelcode/jdate", "description": "Demo-package ", "authors": [ { "name": "Laravel Code", "email": "info@laravelcode.ir" } ], "minimum-stability": "dev", "require": {} }
حالا به شاخه اصلی (root) بر می گردیم و فایل composer.json اصلی لاراول را ویرایش می کنیم و آدرس پیکج جدید را در قسمت psr-4 وارد می کنیم.
"autoload": { "classmap": [ "database" ], "psr-4": { "App\\": "app/", "Laravelcode\\Jdate\\": "packages/laravelcode/jdate/src" } },
سپس در همان شاخه اصلی در خط فرمان دستور زیر را اجرا می کنیم :
composer dump-autoload
حالا باید کلاس پروایدر را بسازیم و برای این منظور می توانیم از دستورات astisan در خط فرمان استفاده کنیم :
php artisan make:provider JdateServiceProvider
با اجرای این دستور یک فایل با نام JdateServiceProvider.php در شاخه app/Providers ایجاد می شود که باید آن را به شاخه /packages/laravelcode/jdate/src/ منتقل کنیم.
حالا فایل config/app.php را ویرایش می کنیم و پکیج را در آرایه providers معرفی میکنیم:
'providers' => [ /* * Laravel Framework Service Providers... */ Illuminate\Foundation\Providers\ArtisanServiceProvider::class, // ... other providers Illuminate\View\ViewServiceProvider::class, Laravelcode\Jdate\JdateServiceProvider::class,
کار تمام است و برای استفاده از این پکیج کافی است با استفاده از namespace که تغریف کرده ایم آن را صدا بزنیم، برای مثال در کنترولر می توانیم به شکل زیر عمل کنیم :
namespace App\Http\Controllers; use Illuminate\Http\Request; use Laravelcode\Jdate\Jdate; class TestController extends Controller { /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { $Jdate = new Jdate(); }
برای جزئیات بیشتر به مستندات لاراول مراجعه کنید:
https://laravel.com/docs/master/providers