如何在 Slim 中管理文件结构?

How to manage file structure in Slim?

我使用过许多 MVC 框架,现在我正在使用 Slim Framework 开发一个网站。我喜欢它,因为它很轻。

唯一的问题是我如何管理我的文件结构,因为随着应用程序大小的增长,将所有路由及其关闭函数写入单个文件将无法管理。

假设您有一个应该包含所有路线的文件夹:

$dir = 'path/to/routes';

foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS)) as $file){
  require $file;
}

Slim 并不真正支持 fs,这是一件好事。

路由无论如何都应该用名称声明,因此它们所在的文件名或目录对框架本身影响不大。

不过您可能想自己优化它,因此建议使用子目录。

如果您不想使用 sub-directory,您可以从循环中删除 RecursiveIteratorIterator,或者只包含 1 个包含它们的文件。

我成功地将路由分成按用途或意图分组的不同文件,并对每个文件简单地使用 require_once。 IMO,它简单、明确,并且让事情井井有条。

将所有路由文件保存在一个地方也很重要,所以我通常将我的路由放在它们自己的子目录中。我用过 /routes/src/routes/app/routes,都取得了同样的成功。

我的 /public/index.php 文件的最后一点通常是这样的:

<?php

// ... snip ...

require_once dirname(__DIR__) . '/app/routes/auth.php';
require_once dirname(__DIR__) . '/app/routes/default.php';
require_once dirname(__DIR__) . '/app/routes/admin.php';

// $app is an instance of \Slim\App
$app->run();