创建目录 packages/{your_name}/{your_package_name}
进入扩展包目录,初始化 composer 配置
cd packages/hongen/logok
composer init
执行之后,项目下生成一个 composer.json 文件:
{
"name": "hongen/logok",
"description": "logok",
"authors": [
{
"name": "hongen",
"email": "zzwhe@126.com"
}
],
"require": {}
}
创建扩展包基本目录、文件
一般情况下,我们会创建以下文件和目录:
hongen/logok
├── src #存放扩展包所有的逻辑代码
├── tests # 存放测试用例
├── README.md
├── composer.json
└── LICENSE
修改扩展包 composer 配置
修改此扩展包中的 composer.json
文件,设置一下 composer
的自动加载配置、以及扩展包的命名空间。
{
"name": "hongen/logok",
"description": "logok",
"authors": [
{
"name": "hongen",
"email": "zzwhe@126.com"
}
],
"require": {},
"autoload": {
"psr-4": {
"Hongen\\Logok\\": "src/"
}
},
"extra": {
"laravel": {
"providers": [
"Hongen\\Logok\\LogokServiceProvider"
],
"aliases": {
"Logok": "Hongen\\Logok\\Logok"
}
}
}
}
然后创建服务:使用 artisan 命令
php artisan make:provider LogokServiceProvider
执行完成,laravel 在 app/Providers
下会生成 LogokServiceProvider.php
然后剪切到 src目录:packages/hongen/logok/src
同时修改代码的命名空间为:namespace Hongen\Logok
;
编写扩展包逻辑代码
<?php
namespace Hongen\Logok;
use Illuminate\Support\ServiceProvider;
class LogokServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot(){
$this->loadMigrationsFrom(__DIR__.'/../migrations');
}
/**
* Register the application services.
*
* @return void
*/
public function register(){
$this->app->singleton('logok', function () {
return new Logok;
});
}
}
<?php
namespace Hongen\Logok;
use DB;
class Logok{
static public function info($v){
DB::table('info')->insert(['info'=>$v,'created_at'=>date("Y-m-d H:i:s")]);
}
}
?>
此时,这个扩展包算是开发好了,接下来我们开始进行本地安装、测试。
扩展包本地测试
把 AdminServiceProvider 添加到项目的 config/app.php providers
数组中
'providers' => [
...,
Hongen\Logok\LogokServiceProvider::class,
],
再修改项目下的 composer.json 文件
"psr-4": {
"App\\": "app/",
"Hongen\\Logok\\":"packages/hongen/logok/src/"
}
运行命令:composer dump-autoload
自动加载生效
发布扩展包
1.在github创建个项目,将代码推送到github上。
2.打开https://packagist.org/ 注册个账号,提交github的地址就可以了。