扩展包的开发
1. 创建一个新项目,初始化扩展包配置
首先创建一个全新的Laravel项目:
composer create-project --prefer-dist laravel/laravel laravelPkg
接下来,在项目中创建目录package/{your_name}/{your_package_name}
mkdir -p packages/zhxlan/laradmin
进入到这个目录,执行composer init
cd packages/zhxlan/laradmin
composer init
接下来的就是看你具体的配置包信息了。执行完成后会生成一个composer文件。
{"name": "zhxlan/laradmin","authors": [{"name": "zhx","email": "zhx.0830@qq.com"}],"require": {}
}
2. 创建扩展包基本目录,文件
一般情况下,我会创建一下的目录
packages/zhxlan/laradmin
├── composer.json
├── src
└── tests
3. 修改扩展包 composer 配置
然后修改我们这个扩展包的composer.json
文件,设置一下自动加载配置、以及扩展包的命名空间。
{"name": "zhxlan/laradmin","description": "","keywords": ["laravel", "laradmin"],"autoload": {"psr-4": {"Zhxlan\\Laradmin\\": "src/"}},"authors": [{"name": "zhx","email": "zhx.0830@qq.com"}],"license": "MIT","minimum-stability": "stable","require": {}
}
4. 编写扩展包信息啦~
接下来,我们来创建 PluginsServiceProvider
、Plugin
文件。目录结构如下:
packages/zhxlan/laradmin
├── composer.json│ └── config
│ ├── laradmin.php
├── src
│ └── Controller
│ ├── LaradminController.php
│ └── LaradminServiceProvider.php
└── tests
<?phpnamespace Zhxlan\Laradmin\Controller;class LaradminController
{public function index(){return 'Hello';}
}
<?php<?phpnamespace Zhxlan\Laradmin;use Illuminate\Support\ServiceProvider;
use Zhxlan\Laradmin\Controller\LaradminController;class LaradminServiceProvider extends ServiceProvider
{/*** Register any application services.** @return void*/public function register(){// 注册服务绑定$this->app->bind('laradmin', function ($app) {return new LaradminController();});}/*** Bootstrap any application services.** @return void*/public function boot(){// 发布配置文件$this->publishes([__DIR__.'/config/laradmin.php' => config_path('laradmin.php'),]);}}
<?php
return ["name" => "laradmin",
];
到这里已经开发了一个最简单Laravel的扩展包了。
扩展包本地测试
把 PluginsServiceProvider
添加到项目的 config/app.php
中的 providers
数组中
'providers' => [...\Zhxlan\Laradmin\LaradminServiceProvider::class
],
这个时候要修改 package_demo
项目下的 composer.json
{...,"autoload": {...,"psr-4": {...,"Zhxlan\\Laradmin\\": "packages/zhxlan/laradmin/src/"}},...
}
运行命令:
// 发布配置文件在config目录下面
php artisan vendor:publish//最后在根目录执行命令
composer dumpautoload
测试运行:
php artisan tinker//接着输入代码:app('laradmin')->index();
扩展包发布
1. 首先把扩展包发布到全球最火的也是最大的同性交流平台 GitHub
上
2. 接着再 Packagist
也发布 [https://packagist.org/]
设置代码同步
GitHub
,点击 Setting
版本
默认版本是 dev-master
,Composer 包的版本号会从 Git 的 tag 中同步过来。
git tag v1.0.0
git push origin v1.0.0