如何在 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();
我使用过许多 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();