扩展包的开发
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
<?php
namespace Zhxlan\Laradmin\Controller;
class LaradminController
{
public function index(){
return 'Hello';
}
}
<?php
<?php
namespace 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