Php 禁止自动加载程序尝试加载JsonSerializable
我在CodeIgniter内的库中有以下设置:Php 禁止自动加载程序尝试加载JsonSerializable,php,codeigniter-2,Php,Codeigniter 2,我在CodeIgniter内的库中有以下设置: class DataModelAutoloader { public function __construct() { spl_autoload_register(array($this, 'loader')); log_message('debug', 'QR-Invited autoloader initialized'); } public function loader($c
class DataModelAutoloader
{
public function __construct()
{
spl_autoload_register(array($this, 'loader'));
log_message('debug', 'QR-Invited autoloader initialized');
}
public function loader($className)
{
log_message("debug", "Accessing loader for class: " . $className);
if (substr($className, 0, 9) == 'datamodel') {
$fullyQualifiedPath = APPPATH.str_replace('\\', DIRECTORY_SEPARATOR, $className).'.php';
log_message('debug', 'Fully qualified path is: ' . $fullyQualifiedPath);
require APPPATH.str_replace('\\', DIRECTORY_SEPARATOR, $className).'.php';
}
}
}
现在,我在datamodel/Invite.php
中的一个数据模型Invite
正在加载,但它的定义如下:
class Invite implements JsonSerializable {
...
};
问题是它现在正试图加载datamodel/JsonSerializable.php
,当然,这并不存在,因为我想使用内置的PHP5.4.0JsonSerializable
。(我在运行的机器上安装了PHP5.5.X)。因此,我在运行此代码时遇到以下异常:
<p>Severity: Warning</p>
<p>Message: require(qrinvited-application/datamodel/JsonSerializable.php): failed to open stream: No such file or directory</p>
<p>Filename: libraries/Datamodelautoloader.php</p>
<p>Line Number: 20</p>
严重性:警告
消息:require(qrapplication/datamodel/JsonSerializable.php):无法打开流:没有这样的文件或目录
文件名:libraries/Datamodelautoloader.php
电话号码:20
有没有一种方法可以禁用PHP5内置的自动加载尝试?或者,也许我在扩展类的过程中做错了什么?如果它都是关于“名称空间”的,那么使用
实现\JsonSerializable
。\
使PHP知道使用默认
名称空间,而不是类当前所在的名称空间(在本例中为datamodel
)。如果其所有关于名称空间的内容都使用implements\JsonSerializableYep,则为@s.d.a.p.e。你能把这个作为答案贴出来吗?我会接受的。