composer php包开发,手把手教你开发composer扩展包,搭建thinkphp个人博客(一)

手把手教你开发composer扩展包,搭建thinkphp个人博客(一)

写在前面

由于最近需要用到thinkphp6开发,之前也是处于了解阶段,借此机会来学习一些框架的知识,这也算是我学习扩展包开发的笔记吧。

本系列文章将从零开始一步一步构建thinkphp的博客扩展包。

概览

composer从创建到发布到Packagist

使用服务提供者注册博客核心

用数据库迁移工具控制数据表结构

命令行安装指令

使用中间件做后台用户认证

RESTful API 路由设计

崇尚 「DRY(Don’t repeat yourself)不要重复自己」

初始化项目

本地新建 blog 文件夹,作为扩展的根目录

进入目录,运行:

composer init

基本上一直按回车就可以了

完成后,根目录会生成一个composer.json文件

里面是这样的:

{

"name": "inn20/blog",

"authors": [

{

"name": "inn20",

"email": "dyg0924@sina.cn"

}

],

"require": {}

}

name 是扩展包名称,一般是/,例如inn20/blog

require 是项目的项目的依赖关系,后面会具体讲到

规定应用的命名空间

现在将composer.json修改成

{

"name": "inn20/blog",

"authors": [

{

"name": "inn20",

"email": "dyg0924@sina.cn"

}

],

"require": {},

"autoload": {

"psr-4": {

"Inn20\\Blog\\": "src/"

}

}

}

其中"Inn20\\Blog\\": "src/" 代表命名空间 Inn20\Blog 对应的代码目录在 src下。这样下来,基本的composer包定义就完成了。

新建src目录,并在里面新建 Demo.php 文件:

namespace Inn20\Blog;//这里和composer.json里命名空间对应

class Demo {

public static function sayHello()

{

return 'Good morning';

}

}

到这里我们的扩展包已经开发完成了。

安装Composer包

因为后面要用到,所以建议直接安装一个thinkphp来测试。

新建 tp6 目录,进入目录执行:

composer create-project topthink/think ./

php think run

会输出:

ThinkPHP Development server is started On

You can exit with `CTRL-C`

Document root is: D:\tp6\public

访问 http://127.0.0.1:8000/ 没意外的话会输出成功页面

20200716164608-5f108450d00d0.png

接下来就是安装composer包了,因为我们现在是在本地,还没发布到Packagist,需要做一点手脚。

打开工具人tp6的composer.json文件,加入:

{

...

"repositories": {

"local": {

"type": "path",

"url": "d:/blog"

}

}

}

当我们下次运行 Composer 时,就会同时从 Packagist 和给定的路径查找依赖的资源。并且路径形式的仓库优先级高于 Packagist。

接下来安装我们的composer包:

composer require inn20/blog @dev

完美,可以看到vender目录下多了一个软连接 tp6\vendor\inn20\blog,指向到d:/blog,这就是我们的包源码,现在已经安装成功了。

进入工具人tp6\app\controller\Index.php控制器里试试我们的包:

namespace app\controller;

use app\BaseController;

use Inn20\Blog\Demo;

class Index extends BaseController

{

public function index()

{

return Demo::sayHello();

}

}

访问http://127.0.0.1:8000/index/index 输出:

Good morning

就是这么简单。

发布到Packagist

现在有个问题,如果别人也想用这个composer包,要把代码复制过来,重新配置才能用,那得多麻烦啊。这时候我们就可以把包发布到Packagist了,后面只需要一行代码就可以完成安装。

首先把blog代码上传到GitHub

https://github.com/inn20/blog

建议github仓库名和composer包名一致,不容易混淆

访问https://packagist.org/,注册一个账号

登陆后点击右上角的Submit,填写GitHub链接Check就ok了

20200716164609-5f108451a8766.png

可以看到已经提交成功了

20200716164610-5f10845299724.png

现在可以在任意项目上执行此命令安装blog包了

composer require inn20/blog @dev

因为blog包composer.json文件不是稳定版本,也没有定义版本号。所以需要加上@dev来指定安装开发版,否则会安装失败。

本节源码

https://github.com/inn20/blog/tree/learn01

下一节将正式进入blog的开发,学习thinkphp的生命周期、容器、服务注册等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值