2010-11-17 56 views
1

我刚开始构建我自己的MVC框架。感觉很高兴从头开始了解所有的东西,并且只能获得我的应用程序真正需要的东西。PHP:在我自己的MVC框架中包含文件?

我来自一个codeIgniter背景,帮助我进入MVC的视角。在codeigniter中,为了包含文件,使用codeIgniters very own load class

这个加载类在加载文件时检查一个文件是否曾经被包含,如果没有包含它,它确保文件不被包含两次。

但是,这种包含文件的方法具有使我无法(?)对我的文件运行测试或利用我需要的IDE中的PHPdoc的缺点。

很显然,我可以在PHP向前和向后使用正常include & require功能在我的应用程序,其中将需要一定的库,但它显然不会致使善于可能包括相同的文件两次...

那么 - 在我自己的PHP5 MVC框架中使用什么是一个很好的解决方案来包含文件?

+1

为什么不包含include_once? – 2010-11-17 14:31:57

+0

我有点担心编写冗余代码来覆盖可能的依赖关系,例如,在不同的控制器中使用库时... – Industrial 2010-11-17 14:55:29

回答

2

我正在为您做类似的事情,我正在使用autoload

只是把这个在index.php文件:

function __autoload($class_name) { 
    include $class_name . '.php'; 
} 

或包括任何你需要的逻辑来检查多个目录。

编辑:这是我的(稍微片状)代码检查备用路径。如果你需要检查多条路径,它可以做得更干净。

function __autoload($class_name) { 
    $path = INC_PATH . strtolower($class_name) . '.php'; 

    if (!file_exists($path)) { 
    $path = MODELS_PATH . strtolower($class_name) . '.php'; 
    } 

    require $path; 
} 
+0

您想告诉我您的解决方案来处理多个目录吗? – Industrial 2010-11-17 14:52:39

+0

@Industrial:编辑^ – Skilldrick 2010-11-17 16:42:54

2

只是使用include_oncerequire_once。而CI有一个负载类,你绝不需要使用它。

1

通常PHP有内置的include_once这正如其名字包括文件,但只有一次。

或者您可以使用大多数IDE支持的autoloading(尽管有些需要一点提示 - 取决于您使用的IDE)。

相关问题