創建一個空的laravel項目 composer create-project --prefer-dist laravel/laravel pkg 在新建的 laravel 項目中建立如下目錄 qiangzhiwang\testpkg\src,packages 目錄和 app 目錄同級。我們開發包的 ...
創建一個空的laravel項目
composer create-project --prefer-dist laravel/laravel pkg
在新建的 laravel 項目中建立如下目錄 qiangzhiwang\testpkg\src,packages 目錄和 app 目錄同級。我們開發包的代碼都放在這個 src 目錄中,qiangzhiwang和 testpkg完全自定義。
mkdir -p packages/qiangzhiwang/testpkg/src
修改項目composer.json設定 PSR-4 命名空間
"psr-4": { "App\\": "app/", "Qiangzhiwang\\Testpkg\\" : "packages/qiangzhiwang/testpkg/src" },
進入命令行執行composer dump-autoload將autoload重新生成一次
composer dump-autoload
在qiangzhiwang/testpkg/src目錄下書寫一個簡單的Md5Hasher類
<?phpnamespace Qiangzhiwang\Testpkg;/** * Class Md5Hasher * @package Qiangzhiwang\Testpkg */class Md5Hasher{ /** * @param $value * @param array $options * @return string */ public function make($value, array $options =[]) { $salt = isset($options['salt']) ? $options['salt'] :""; return hash('md5',$value . $salt); } /** * @param $value * @param $hashValue * @param array $options * @return bool */ public function check($value , $hashValue , array $options=[]) { $salt = isset($options['salt']) ? $options['salt'] :""; return hash('md5',$value . $salt) === $hashValue; } }
接下來就是怎麼把這個類融入到laravel容器中
php artisan make:provider Md5HasherProvider
執行完以上命令後,會在app/Providers目錄下生成Md5HasherProvider.php將此文件移動到packages/qiangzhiwang/testpkg/src目錄下
mv app/Providers/Md5HasherProvider.php packages/qiangzhiwang/testpkg/src/Md5HasherProvider.php
移動完成之後,要進行簡單的修改以及完成容器註冊
<?php namespace Qiangzhiwang\Testpkg; use Illuminate\Support\ServiceProvider; class Md5HasherProvider extends ServiceProvider{ /** * Register services. * * @return void */ public function register() { // } /** * Bootstrap services. * * @return void */ public function boot() { // $this->app->singleton("md5hash",function (){ return new Md5Hasher(); }); } }
在config/app.php文件中,providers數組中最後一行添加上
'providers' => [ /* * Application Service Providers... */ ....... \Qiangzhiwang\Testpkg\Md5Hasher::class ],
測試使用
php artisan tinker >>> app("md5hash")->make("123456") => "e10adc3949ba59abbe56e057f20f883e"
發佈包提供給其他開發者下載,需要進入packages/qiangzhiwang/testpkg進行操作
composer init
然後通過git工具發佈到github上,並同步https://packagist.org上,方可進行composer進行安裝使用