应用程序结构

要充分使用 CodeIgniter,你需要了解应用程序的默认结构,以及可以根据你的应用需求进行哪些更改。

默认目录

一个全新的安装包含五个目录:

  • app

  • public

  • writable

  • tests

  • vendorsystem

每个目录都有非常具体的作用。

app

app 目录是应用程序代码存放的地方。它自带一个默认的目录结构,适用于大多数应用程序。

以下目录构成了其基本内容:

app/
    Config/         存储配置文件
    Controllers/    控制器决定程序流程
    Database/       存储数据库迁移和数据填充文件
    Filters/        存储可在控制器前后运行的过滤器类
    Helpers/        辅助函数存储独立函数的集合
    Language/       多语言支持从这里读取语言字符串
    Libraries/      存放不适合其他类别的有用类
    Models/         模型与数据库交互,代表业务实体
    ThirdParty/     可在应用中使用的第三方库
    Views/          视图组成要向客户端显示的 HTML

因为 app 目录已经具备命名空间,你可以根据应用程序的需要自由修改此目录的结构。

例如,你可能决定开始使用 Repository 模式和实体(Entities)来处理数据。在这种情况下,你可以将 Models 目录重命名为 Repositories,并添加一个新的 Entities 目录。

此目录中的所有文件都位于 App 命名空间下,尽管你可以通过修改 app/Config/Constants.php 来更改它。

system

备注

如果你使用 Composer 安装 CodeIgniter,则 system 目录位于 vendor/codeigniter4/framework/system

此目录存储了构成框架本身的文件。虽然你对如何使用应用程序目录有很高的灵活性,但绝不应修改 system 目录中的文件。相反,你应该通过扩展类或创建新类来提供所需的功能。

此目录中的所有文件都位于 CodeIgniter 命名空间下。

public

public 目录存放了 Web 应用程序中可被浏览器访问的部分,防止对源代码的直接访问。

它包含主 .htaccess 文件、index.php 以及你添加的任何应用程序资源,如 CSS、JavaScript 或图片。

此目录旨在作为你网站的 "web root",你的 Web 服务器将被配置为指向它。

writable

此目录用于存放应用程序在其生命周期中可能需要写入的任何目录。这包括用于存储缓存文件、日志以及用户可能上传的文件的目录。

你应该将应用程序需要写入的其他任何目录都添加到这里。这允许你将其他主要目录保持为不可写状态,作为一种附加的安全措施。

tests

此目录用于存放你的测试文件。_support 目录存放了各种模拟类和你在编写测试时可以使用的其他工具。

此目录无需转移到你的生产服务器上。

修改目录位置

如果你已经移动了任何主要目录,可以在 app/Config/Paths.php 内更改配置设置。

请阅读 管理你的应用程序