应用程序结构
为了充分利用 CodeIgniter,你需要了解默认情况下应用程序的结构,以及可以更改什么来满足应用程序的需要。
默认目录
app
system
public
writable
tests
修改目录位置
默认目录
一个新安装有五个目录: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 内更改配置设置。