应用程序结构

为了充分利用 CodeIgniter,你需要了解默认情况下应用程序的结构,以及可以更改什么来满足应用程序的需要。

默认目录

一个新安装有五个目录:app/public/writable/tests/vendor/system/。 每个目录都有非常具体的作用。

app

app 目录是所有应用程序代码的存放位置。它具有默认的目录结构,适用于许多应用程序。以下文件夹组成基本内容:

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

由于 app 目录已经有了命名空间,你应该随意修改此目录的结构以适应应用程序的需要。例如,你可能决定开始使用存储库模式和实体模型来处理数据。在这种情况下,你可以将 Models 目录重命名为 Repositories,并添加一个新的 Entities 目录。

备注

但是,如果你重命名了 Controllers 目录,则无法使用自动将请求路由到控制器的方法,并且需要在 routes 文件中定义所有路由。

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

system

备注

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

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

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

public

public 文件夹包含 web 应用程序的面向浏览器的部分,防止直接访问源代码。 它包含主要的 .htaccess 文件、index.php 以及你添加的任何应用程序资源,如 CSS、JavaScript 或图片。

此文件夹旨在成为站点的“网页根目录”,你的 web 服务器会配置为指向它。

writable

此目录包含在应用程序生命周期中可能需要写入的任何目录。这包括用于缓存文件、日志和用户上传的任何目录。你应该在这里添加应用程序需要写入的任何其他目录。这使你可以保持其他主目录不可写,作为额外的安全措施。

tests

此目录设置为保存测试文件。_support 目录包含可在编写测试时使用的各种模拟类和其他实用程序。此目录不需要传输到生产服务器。

修改目录位置

如果你已重新定位任何主目录,可以在 app/Config/Paths.php 内更改配置设置。

请阅读 管理你的应用程序