Laravel5 开发 package 实例教程
经过一阵摸索,终于学会了开发 Laravel 的 package,在此做做笔记备忘:-)
本文将以一个简单的实例:文本转图片,做一篇 package 开发教程。主要功能就是把文本转成图片,再输出到浏览器显示。
课前预备
- 熟悉 Laravel 开发
- 了解 Laravel 运行机制(IoC、DI 等)
- 了解服务提供者(Service Providers)
- 了解服务容器(Service Container)
- 了解 Facade
以上几点务必要弄懂,不然本文可能会看的不明不白。
测试环境
- CentOS 7.0
- Nginx 1.8.0
- PHP 5.6.13
- Laravel 5.2
开发步骤
安装最新版的 Laravel
目前最新版的是 5.2,按步骤安装就行了。
创建 package 目录
在 Laravel 的根目录下创建文件夹结构:
如图中所示,dreamlike 文件夹指 package 的创建者,可以自定义;text2image 文件夹指 package 的名字,可以自定义。
初始化 composer.json
进入终端,然后进入目录 packages/dreamlike/text2image,初始化 composer.json,然后按提示操作即可:
1 | composer init |
然后在目录 packages/dreamlike/text2image 下可以找到 composer.json,内容如下:
1 | { |
修改主 composer.json
注意了,这里指的 composer.json 是 Laravel 根目录下的,不是刚刚生成的那个(我就在这里吃过亏,搞错了)。在节点 "autoload" 的子节点 "psr-4" 下增加内容,如下:
1 | "Dreamlike\\Text2Image\\": "packages/dreamlike/text2image/src" |
1 | "autoload": { |
其中,这句话的意思是把命名空间 Dreamlike\Text2Image\ 指向目录 packages/dreamlike/text2image/src
然后在终端,Laravel 根目录输入:
1 | composer dump-autoload |
创建服务提供者 Service Providers
在 packages/dreamlike/text2image/src/ 目录下创建文件夹 Providers 在终端,Laravel 根目录输入:
1 | php artisan make:provider Text2ImageServiceProvider |
这样 Artisan 就会自动帮我们生成一个服务提供者的模板。其中,Text2ImageServiceProvider 是服务提供者的名字。该文件会生成在 app/Providers 目录下,找到这个文件,把它移动到 packages/dreamlike/text2image/src/Providers 目录。
创建 Facades
在 packages/dreamlike/text2image/src/ 目录下创建文件夹 Facades,然后创建文件 Text2Image.php,编辑内容为:
1 |
|
创建实例类
在 packages/dreamlike/text2image/src/ 目录下创建 T2I.php,并编辑内容为:
1 |
|
绑定实例类
编辑文件 packages/dreamlike/text2image/src/Providers/Text2ImageServiceProvider.php,修改内容为:
1 |
|
config/app.php 中添加服务提供者
安装过 Laravel 三方包的应该都知道该怎么操作:
1 | 'providers' => [ |
在 controller 中测试
新建一个 controller,在配置路由,测试我们刚刚开发的 package 是否可用:
1 |
|
测试结果:
发布到 Github 和 Packagist
这个读者自己摸索吧,不是很难的。