安装工具
先安装 超哥的 package-builder
切换到一个laravel 目录下创建 pkg cd pkg
执行:
创建
package-builder build laravel-validate-ext
输出内容如下
进入 src 创建 LaravelValidateExtProvider.php
,内容如下
<?php
namespace Liaosp\LaravelValidateExt;
use Illuminate\Support\ServiceProvider;
class LaravelValidateExtProvider extends ServiceProvider
{
/**
* Bootstrap services.
*
* @return void
*/
public function boot()
{
//todo 这边写逻辑
die('helloworld');
}
}
包载入laravel
进入包 composer.json编辑
添加扩展:
"extra": {
"laravel": {
"providers": [
"Liaosp\\LaravelValidateExt\\LaravelValidateExtProvider"
]
}
},
现在需要把这个提供类,添加到你的laravel项目中,通过composer 的方式导入
在laravel 项目中 composer.json 中添加
"repositories": [
{
"type": "path",
"url": "pkg\\laravel-validate-ext"
}
]
执行:
composer require liaosp/laravel-validate-ext dev-master
书写逻辑
如果这步有啥报错,比如命名之类的错误了,需要把他移除掉composer remove
再安装
如何测试 我这个包是否已经导入到laravel 框架了呢?我们在刚刚提供类中断电一下
public function boot()
{
die('helloworld');
}
因为laravel 加载的时候都先执行boot 初始化
php artisan test
可以看到 'helloworld'
到这边,你就掌握了laravel composer 包的开发了,具体实现我已经上传到了github 有兴趣的可以看一下。
https://github.com/liaoshengping/laravel-validate-ext
Run
$v = Validator::make($request->all(), [
'name' => "idCard"
]);
if ($v->fails()) {
return $v->errors()->first();
}
输出是没有问题的,到这就完成了。
编写测试
那一般来说这样就已经可以了,但是一个合格的包,还需要编写测试
新建测试文件:
pkg\laravel-validate-ext\tests\ValidateTest.php
写入刚刚写好的测试扩展,比如:
/**
* 验证某个字段的值只能是汉字、字母和数字
*/
public function testChsAlphaNum()
{
$data = ['name' => '小L'];
$v = \Illuminate\Support\Facades\Validator::make($data, ['name' => 'chsAlphaNum']);
$this->assertTrue(!$v->fails());
$data = ['name' => '小L.'];
$v = \Illuminate\Support\Facades\Validator::make($data, ['name' => 'chsAlphaNum']);
$this->assertFalse(!$v->fails());
}
具体的测试上传到了https://github.com/liaoshengping/laravel-validate-ext
Laravel 执行测试
php artisan test pkg/laravel-validate-ext
可以看到刚刚写的测试都已经通过,说明大概率是没问题了,下面就上传到packagist 可以供其他小伙伴使用了。
同学们一般Pr 的时候最好也写测试文件,这样作者就可以执行,没有问题再合并
上传到Packagist
我们打一个标签
在github 创建仓库: laravel-validate-ext 把刚刚的包传到这边仓库
git tag v1.0.0
git push origin --tags
登录 https://packagist.org/
把github 地址 输进去提交,就完成了
https://packagist.org/packages/liaosp/laravel-validate-ext
Thinkphp如何开发扩展包
作为中国比较流行的Tp框架,其扩展包也和laravel 差不多,可以参考 学习Tp 的扩展包开发,包括添加命令 https://github.com/top-think/think-migration
发布静态资源的可以参考