开发 Laravel 扩展的基本流程

创建一个空的laravel项目

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

在新建的 laravel 项目中建立如下目录 qiangzhiwang\testpkg\srcpackages 目录和 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

接下来就是怎么把这个类融入到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

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

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进行安装使用

你可能感兴趣的:(php)