我正在考虑使用CodeIgniter作为我下一个Web应用程序的框架。但是,我已经定义了大量的辅助类和数据结构。我可以将它们添加到应用程序的库中,但我必须重命名大量文件和类的名称以匹配criterion
我是否可以直接包含文件,就像在正常的Web应用程序上工作一样,绕过load-> library()?或者是为常用的类保留了库吗?
答案 0 :(得分:8)
更好的是,将__autoload()
放在config.php的底部(一个奇怪的地方,但相信我是最好的)并让它检查应用程序/类/然后检查应用程序/函数。
/*
| -------------------------------------------------------------------
| Native Auto-load
| -------------------------------------------------------------------
|
| Nothing to do with config/autoload.php, this allows PHP autoload to work
| for controller types and some third-party libraries.
|
*/
function __autoload($class)
{
if(strpos($class, 'CI_') !== 0)
{
$lib = APPPATH . 'libraries/'. $class . EXT;
$class = APPPATH . 'classes/'. $class . EXT;
if(file_exists($class))
{
include_once( $class );
}
else if(file_exists($lib))
{
include_once( $lib );
}
}
}
这样你就不必担心事情是如何加载的。按预期使用核心库并使用您的类而不包括它们。您甚至可以开始将类移到库中而无需过多担心命名约定或加载器,而libs可以是静态的,单例,无论使用这种方法。
答案 1 :(得分:2)
如果您愿意,可以直接包含它们。加载功能使事情变得更容易,但没有什么能阻止你在php中执行标准包含。我已经使用第三方课程多次完成。
如果你还在寻找一个好的PHP框架,Kohana(CodeIgniter的一个分支)值得一试。在我看来,它比CodeIgniter好得多。
答案 2 :(得分:1)
您不需要使用CodeIgniter的类加载器,您也可以像在任何Web应用程序中一样require
,或者将它们包装在可加载CI的包装器中。在我自己的项目中,我有一些来自我的基本控制器的小型独立库require
,并且我将一些公共库(如Markdown)包装起来用作标准CI库。