Tạo Package trong Laravel

Laravel packages là gì?

Laravel Package là một cách để mở rộng chức năng của Laravel, giúp chúng ta có thể tái sử dụng chúng trong các dự án khác nhau mà không cần phải thêm chúng vào từng dự án một cách thủ công. Điều này giúp tiết kiệm thời gian và công sức, đồng thời cũng giúp chúng ta dễ dàng chia sẻ các chức năng phổ biến với cộng đồng Laravel.

Khởi tạo package và route

Tạo folder packages tại folder gốc, trong folder packages tạo folder feature cần làm (ở đây mình ví dụ translate-tool).

Mở terminal ở folder translate-tool và chạy lệnh composer init

Package name: haodt/translate-tool

Description: Translate vuejs text japan

Author: enter

Minimun stability: dev

Pakage Type: libarary

Would you like: no

Would you like: no

Add PSR-4: enter

Do you confirm: yes

Tạo folder Provides trong folder src và file TranslateServiceProvider.php

<?php

namespace TranslateTool\Providers;

use Illuminate\Support\ServiceProvider;

class TranslateServiceProvider extends ServiceProvider {

    /**

    * Bootstrap the application services.

    *

    * @return void

    */

    public function boot()

    {

        $this->loadRoutesFrom(__DIR__.'/../routes/web.php');

    }

    /**

    * Register the application services.

    *

    * @return void

    */

    public function register()

    {

    //

    }

}

Tạo folder routes trong folder src và file web.php

<?php

Route::get('/abc', function () {

    return 'abc';

});

Chỉnh sửa file composer.json trong folder packages/translate-tool  (dòng 8 tôi xóa đi HaoDT – bạn có thể giữ lại nhé)

{

    "name": "haodt/translate-tool",

    "description": "translate vuejs text japan",

    "type": "library",

    "license": "MIT",

    "autoload": {

        "psr-4": {

            "TranslateTool\\": "src/"

        }

    },

    "authors": [

        {

            "name": "HaoDT",

            "email": "tronghaomaico@gmail.com"

        }

    ],

    "minimum-stability": "dev",

    "require": {}

}

Chỉnh sửa file composer.json trong folder root.

// => autoload dev thêm TranslateTool như ở file composer.json trong package,

// nhưng value là đường dẫn từ folder root đến src

"autoload-dev": {

        "psr-4": {

            "Tests\\": "tests/",

            "TranslateTool\\": "packages/translate-tool/src/"

        }

},

Đăng ký trong config/app.config

...

        /*

         * Application Service Providers...

         */

        App\Providers\AppServiceProvider::class,

        App\Providers\AuthServiceProvider::class,

        // App\Providers\BroadcastServiceProvider::class,

        App\Providers\EventServiceProvider::class,

        App\Providers\RouteServiceProvider::class,

        TranslateTool\Providers\TranslateServiceProvider::class,

    ],

Run command ở root folder

  1. composer dump-autoload

Xong rồi, chỉ cần test thử thôi. Bạn hãy start server lên nhé.

php artisan serve

  

// sau đó vào đường dẫn

http://127.0.0.1:8000/abc

// xem có ra text abc không nhé, nếu ra là ok rồi đó.

Tạo controllers cho package

Trong folder src tạo folder Http/Controllers và tạo file TranslateToolController.php

<?php

 

namespace TranslateTool\Http\Controllers;

 

use Illuminate\Http\Request;

use App\Http\Controllers\Controller;

 

class TranslateToolController extends Controller

{

    public function index() {

        return 'abc';

    }

}

Chỉnh sửa lại file routes/web.php

<?php

Route::group(['namespace' => 'TranslateTool\Http\Controllers'], function() {

    Route::get('/abc', 'TranslateToolController@index');

});

Tạo migration cho package

Tạo folder database/migrations và tạo file migration như bình thường.

Thêm  $this->loadMigrationsFrom(__DIR__.’/../database/migrations’); vào  Prividers/TranslateServiceProvider

<?php

namespace TranslateTool\Providers;
use Illuminate\Support\ServiceProvider;
 
class TranslateServiceProvider extends ServiceProvider {
    /**
    * Bootstrap the application services.
    *
    * @return void
    */
    public function boot()
    {
        $this->loadRoutesFrom(__DIR__.'/../routes/web.php');
        $this->loadMigrationsFrom(__DIR__.'/../database/migrations');
    }
 
    /**
    * Register the application services.
    *
    * @return void
    */
    public function register()
    {
    //
    }
}

Chạy migrate bằng lệnh sau:

  1. php artisan migrate –path=packages\translate-tool\src\database\migrations

Tạo models cho package

Tạo thêm folder Models và sử dụng như bình thường.

Kết luận

Trên đây là những chia sẻ của mình về sử dụng Package của Laravel. Mong là bài viết này sẽ hữu ích cho các bạn khi tìm hiểu và ứng dụng vào dự án.

無料相談・お問い合わせ
ご相談やお見積もりは全て 無料 で対応いたします。

    「個人情報保護方針」をお読みいただき同意いただける場合は「送信」ボタンを押して下さい。
    入力していただいたメールアドレス宛に自動返信メールを送信していますので、お手数ですがそちらをご確認ください。
    無料相談・お問い合わせ
    ご相談やお見積もりは全て 無料 で対応いたします。

      「個人情報保護方針」をお読みいただき同意いただける場合は「送信」ボタンを押して下さい。
      入力していただいたメールアドレス宛に自動返信メールを送信していますので、お手数ですがそちらをご確認ください。
      無料相談
      お問い合わせ