如何组织大型 Slim Framework 应用程序

Slim 微型框架是一种微型框架,使开发者能够快速编写 RESTful Web 应用程序和 API。我强调微型是因为 Slim 就是这样——用于构建小型 Web 应用程序和 API 的轻量、灵活的 PHP 框架。与 CodeIgniter 和 Symfony(分别由 EllisLab 和 Sensio Labs 创建的出色框架)不同,Slim 放弃控制器和抽象组件以实现简洁性和易用性。

你可以使用一个文件构建 Slim Framework Web 应用程序。然而,随着时间的推移,项目的范围和规模都会不断扩大;更好的组织变得越来越必要。Slim 不使用控制器组织应用程序方法或路由;控制器超越了 Slim 的关注范围。话虽如此,完全可以组织大型 Slim Framework 应用程序。以下是我组织自己的 Slim Framework 应用程序的方式。

文件系统布局

以下是我用于自己 Slim Framework 应用程序的目录结构

public_html/
    .htaccess
    index.php
    styles/
    images/
    scripts/
app/
    routes/
        session.php
        member.php
        admin.php
vendor/
lib/
data/
public_html/
包含 Slim Framework 的 .htaccess 和 index.php 文件。index.php 是你在其中实例化并运行 Slim Framework 应用程序的文件。公共资产(样式表、图像和脚本)也在此目录中。
app/
包含不应在公共文档根目录中使用的应用程序代码。
vendor/
包含第三方库,如 Twig 或 Smarty。
lib/
包含我的应用程序所使用的自定义库。
data/
包含应用程序数据库模式和(如果需要)SQLite 数据库。

将路由组织到单独的文件中

Slim Framework 示例应用程序可能包含一个管理控制面板、仅限会员页面和公共页面(例如登录、登出和注册)。如上文的文件系统布局所示,我将相关路由分离到单独的文件中。管理员路由转至 app/routes/admin.php。会员路由转至 app/routes/member.php。会话管理路由(例如登录、登出、注册)转至 app/routes/session.php。这些单独的路由文件由 public_html/index.php 以这种方式必需

$app = new Slim();
require '../app/routes/session.php';
require '../app/routes/member.php';
require '../app/routes/admin.php';
$app->run();

不必使用一个非常大的 index.php 文件,有几个较小的文件可以使构建大型 Slim Framework 应用程序更容易。