扩展 php_(PHP)开发Laravel扩展的基本流程

创建一个空的laravel项目

composer create-project --prefer-dist laravel/laravel pkg

在新建的 laravel 项目中建立如下目录 qiangzhiwangestpkgsrc,packages 目录和 app 目录同级。我们开发包的代码都放在这个 src 目录中,qiangzhiwang和 testpkg完全自定义。

mkdir -p packages/qiangzhiwang/testpkg/src

修改项目composer.json设定 PSR-4 命名空间

"psr-4": {    "App": "app/",    "QiangzhiwangTestpkg" : "packages/qiangzhiwang/testpkg/src"},

进入命令行执行composer dump-autoload将autoload重新生成一次

composer dump-autoload

(大礼包)30G-PHP进阶资料,助力大家达到30K

在qiangzhiwang/testpkg/src目录下书写一个简单的Md5Hasher类

<?phpnamespace QiangzhiwangTestpkg;/** * Class Md5Hasher * @package QiangzhiwangTestpkg */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

移动完成之后,要进行简单的修改以及完成容器注册

<?phpnamespace QiangzhiwangTestpkg;use IlluminateSupportServiceProvider;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...    */       .......    QiangzhiwangTestpkgMd5Hasher::class],

测试使用

php artisan tinker>>> app("md5hash")->make("123456")=> "e10adc3949ba59abbe56e057f20f883e"

发布包提供给其他开发者下载,需要进入packages/qiangzhiwang/testpkg进行操作

composer init

然后通过git工具发布到github上,并同步https://packagist.org上,方可进行composer进行安装使用

以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要的可以加入我的官方群。

06825b4d26b840f5a7571299714bd94a.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值