我在 PHP 中经常使用的一种模式是设置一些全局变量(例如$page
、$user
、$db
等),然后包含一个使用这些全局变量的文件。不过,我从来不喜欢为此使用全局变量的想法,所以我正在寻找更好的方法。
显而易见的解决方案是在子文件中定义一个类或函数,并在包含文件后调用它。但在某些情况下这不起作用,例如:
// Add entries to a URI table from each section of the site
global $router;
$router = new VirtualFileSystem();
$sections = array('store', 'forum', 'blog');
foreach($sections as $section)
include dirname(__FILE__) . $section . '/routing.php';
// Example contents of 'forum/routing.php'
// implicitly receive $router from caller
$router->add('fourm/topic/', 'topic.php');
$router->add('forum/topic/new/', 'new_topic.php');
// etc
如果我尝试将每个函数包装routing.php
在一个函数中并$router
作为参数调用它们,那么在多个文件中定义相同的函数名称后会发生冲突。
我没主意了。有没有更好的方法将变量传递给包含的文件而不污染全局命名空间?