ساخت پکیج برای لاراول

برای ساخت 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