开发 Laravel 扩展的基本流程
程序员文章站
2022-06-23 22:54:51
创建一个空的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进行安装使用
上一篇: 《吊打面试官》系列-HashMap