robertmain/codeigniter-starter

dev-master 2021-03-21 03:59 UTC

README

Build Status Dependabot Status

这是一个CodeIgniter启动应用程序,旨在快速启动并运行,并能够编写尽可能干净、可测试的代码。

安装

  • 使用Composer:composer create-project robertmain/codeigniter-starter --dev
  • 手动:git clone https://github.com/robertmain/codeigniter-starter

原因

由于大多数CodeIgniter应用程序依赖于巨大的God对象$this,其他所有内容(包括类加载器)都从中派生,因此目前测试CodeIgniter应用程序非常困难。

本项目引入了Composer,既可以加载来自Packagist的第三方库,也可以方便地实现模型命名空间。这反过来使我们能够创建更易于测试和处理的单个代码单元的业务对象抽象。

内容

此CodeIgniter启动项目提供以下内容

测试

一个完全功能的PHPUnit/Mockery设置,具有命名空间化的模型

基础模型

一个基本的模型抽象,提供一些有限的CRUD功能和CRUD生命周期回调。这受到了Jamie Rumbelow的基础模型的启发,但为了支持软删除而有所分歧。

此基础模型还提供了created_atupdated_atdeleted_at的字段名。这被重用于抽象基迁移中,以提供创建日期字段的名。

模板化

引入了Plates模板引擎来处理CodeIgniter中的模板。这允许前端布局具有更大的灵活性,尤其是在模板区域、继承和部分重用等方面。

命名空间

现在可以在App\Models中为模型命名空间。加载器已扩展以支持此功能,但它应正常行为。我们通过使用Composer和PSR-4命名空间在我们的模型中免费获得此行为。

请注意:由于CodeIgniter加载控制器的方式,目前无法对控制器进行命名空间,否则框架将无法找到它们。

环境配置

现在使用Dotenv来提供数据库设置。这防止了数据库配置意外提交,并提供了一种简单、一致的方式设置不同的环境。

Composer脚本

还提供了Composer脚本,以帮助管理应用程序的开发。这些脚本包括

  • test:models - 测试应用程序模型
  • test:controllers - 测试应用程序控制器
  • test - 测试模型和控制器
  • docs 从模型和控制器生成php文档
  • migrate:latest - 运行最新的数据库迁移并升级数据库到最新版本
  • migrate:flush - 删除整个数据库并重新创建它。出于安全考虑,如果请求在生产环境中删除数据库,应用程序将抛出异常

异常

此启动项目还包括crazycodr/standard-exceptions,用于为常见场景提供标准化的PHP异常。