我一直在为我移植到 CI 框架的项目创建自定义库,但我遇到了某些类具有相同名称的问题。
为了避免这个问题,我尝试过实现命名空间但没有成功。我一直在做研究,我知道在过去这可能是不可能的,但是对于较新版本的 PHP,我想知道是否有办法做到这一点,或者我是否正确地做到了这一点。
CI 版本:2.1.4 PHP版本:5.4.12
这是我的设置演示:
application/libraries/class1.php
<?
class class1{
public function __construct()
{
$CI =& get_instance();
$CI->load->library('foo/class2.php');
}
}
?>
application/libraries/foo/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
关于php - Codeigniter 自定义库和命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22410710/