我正在考虑使用 CodeIgniter 作为我的下一个 Web 应用程序的框架。然而,我已经定义了大量的帮助器类和数据结构。我可以将它们添加到应用程序的库中,但我必须重命名大量文件和类的名称以匹配criterion
我可以直接包含文件,就像在正常的 Web 应用程序上工作一样,绕过 load->library() 吗?或者该库是为常用的重用类保留的吗?
更好的是,在 config.php 底部放一个
__autoload()
(一个奇怪的地方,但相信我,这是最好的)并让它检查 application/classes/ 然后检查 application/functions。
/*
| -------------------------------------------------------------------
| 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;
}
}
}
这样你就不需要担心东西是如何加载的。按预期使用核心库并使用您的类而不包含它们。您甚至可以开始将类转移为库,而无需过多担心命名约定或加载器,并且库可以是静态的、单例的,无论使用此方法如何。
如果您愿意,可以直接包含它们。加载功能使事情变得更容易,但没有什么可以阻止您在 php.ini 中执行标准包含。我已经用第三方课程做过好几次了。
如果您仍在寻找一个好的 PHP 框架,Kohana(CodeIgniter 的一个分支)值得一试。在我看来,它比 CodeIgniter 好得多。
您不需要使用 CodeIgniter 的类加载器,您也可以像在任何 Web 应用程序中一样
require
它们,或者将它们包装在 CI 可加载包装器中。在我自己的项目中,我有一些来自基本控制器的小型独立库,并且我包装了一些公共库(例如 Markdown)以用作标准 CI 库。