(8)php框架开发---添加Compoer支持

    在使用过Laravel框架和Tp5框架后,都会知道Composer这个东西。使用这个对项目进行管理真的很方便。而且现代化的框架都应该支持Composer操作,因为支持Composer后你就能够使用更多的扩展包。框架的可扩展性也更加强大。

重构之前框架的思路

    为了将框架进行Composer支持,这里首先要思考的是,怎么去拆分出来做的问题。首先要将Rice(我的框架名字)的核心代码库抽离出来,在github上单独一个项目。项目地址:rice/framework。将Rice核心库抽离出来后,我们就能够将它从 项目地址:rice/rice这里使用Composer将核心库载入进来,而且这里面要将之前的核心库中的Loader类去掉,统一使用ComposerclassLoader类来加载。

开干

    思路明确后我们就开始重构项目了。
首先将核心代码库独立出来
在这里插入图片描述
这里面的github创建一个新的仓库就不具体介绍了,小白可以百度一下。
在这里插入图片描述
这个是框架结构项目,用来载入核心库的。这里面与之前的项目不同在于统一将模块放在App文件夹下面进行模块编写,这里你可能会有疑惑会这么写?这样写的原因是composer.json文件中我要将自动加载的文件路径定义出来,根目录是不可能使用的,所以我只好定义一个App文件夹统一存放。之前的核心库也删除了,之后核心库要通过composer install引入进来。

    然后我们来讲一下composer.json的使用方法

Rice - composer.json:

{
    "name": "rice/rice",
    "description": "rice",
    "type": "project",
    "license": "MIT",
    "authors": [
        {
            "name": "DMF",
            "email": "1015814408@qq.com"
        }
    ],
    "minimum-stability": "dev",
    "require": {
		"rice/framework" : "~1.0"
	},
    "autoload": {
        "psr-4": {
            "App\\": "App/"
        }
    }
}

这个项目文件是使用composer init来生成的,然后这里面自己写的是requireautoload

  • require
    要加载的扩展包,这里面我的是rice/framework这个composer包。这里你可能会存在疑惑,为什么与github的项目名称不一致的呢?其实composer下来的包都不是存放在github上面的,而是这个网站packagist。所以这里要以这个的命名为主。不会如何使用github来关联packgist的话,可以看一下这篇文章。如何建立自己的composer包

  • autoload
    这个autoload是重头戏,因为composer包的文件加载都要靠它来实现。这里面有psr-4,psr-0,classmap,files这四个参数可选。然后我这里面要使用到的是psr-4files

psr-4是用来定义根据命名空间自动加载类文件的规则,所以在这里定义一个路径就能够使他们能够加载进来。
files是用来加载文件的,例如使用一些辅助函数就可以直接写文件路径进来。

Rice改进

  • 代码格式统一采用psr-2格式
  • 项目模块目录统一定义在App文件夹
  • 删除自定义的文件加载Loader类,统一采用Composer自带加载
  • 修改Dispatcher类中采用全局变量定义modulecontrolleraction等变量。
  • 异常统一处理
  • 添加请求和返回的psr规范
  • 统一容器管理
  • 日志系统

注意细节

  1. 命名空间采用反斜杠\,文件加载斜杆/
  2. 使用git tag v0.0.0来发布扩展包
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值