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.

Tư vấn - Báo giá
Mở rộng quy mô doanh nghiệp của bạn với ONETECH!
Hãy liên hệ với chúng tôi để được cung cấp các dịch vụ phát triển phần mềm chất lượng cao với chi phí hợp lý nhất. Các kỹ sư của chúng tôi sẽ giúp bạn phát triển một giải pháp phù hợp để vượt lên đối thủ cạnh tranh của mình.
Mọi thông tin tư vấn và báo giá đều miễn phí.

    「Chính sách bảo mật」Nếu bạn đồng ý với những điều trên, vui lòng nhấp vào nút "Gửi"
    Một email trả lời tự động sẽ được gửi đến địa chỉ email bạn đã nhập, vì vậy hãy kiểm tra điều đó.
    Tư vấn - Báo giá
    Mở rộng quy mô doanh nghiệp của bạn với ONETECH!
    Hãy liên hệ với chúng tôi để được cung cấp các dịch vụ phát triển phần mềm chất lượng cao với chi phí hợp lý nhất. Các kỹ sư của chúng tôi sẽ giúp bạn phát triển một giải pháp phù hợp để vượt lên đối thủ cạnh tranh của mình.
    Mọi thông tin tư vấn và báo giá đều miễn phí.

      「Chính sách bảo mật」Nếu bạn đồng ý với những điều trên, vui lòng nhấp vào nút "Gửi"
      Một email trả lời tự động sẽ được gửi đến địa chỉ email bạn đã nhập, vì vậy hãy kiểm tra điều đó.
      liên hệ