我一直在为一个项目创建自定义库,我已经将其移植到CI框架中,并且遇到了某些类具有相同名称的问题.
为了避免这个问题,我尝试实现命名空间无济于事.我一直在做研究,我知道在过去这可能是不可能的,但是对于新版本的PHP,我想知道是否有办法做到这一点,或者我是否正确地做到了这一点.
CI版本:2.1.4
PHP版本:5.4.12
这是我的设置演示:
应用/库/ class1.PHP
<?
class class1{
public function __construct()
{
$CI =& get_instance();
$CI->load->library('foo/class2.PHP');
}
}
?>
应用/库/富/ class2.PHP
<?
namespace foo
class class2{
function bar(){
}
}
?>
当我运行CI应用程序时,我将收到以下错误:
不存在的类:class2
谢谢你的帮助.
解决方法:
从我发现的,如果库文件没有
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
作为第一行代码,它不会加载库.
但是,名称空间声明需要高于此.
CodeIgniter是为PHP4编写的,而命名空间是PHP5.
这个帖子中有更多信息:Namespace in PHP CodeIgniter Framework