PHP自动加载查找当前PHP文件
文件:deckclass.php,DOCROOT设置为/var/www/Proj/application/controllers 获取错误:致命错误:在第38行的/var/www/Proj/application/controllers/deckclass.php中找不到类“Cardclass” 为什么搜索当前php文件而不是DOCROOT文件夹PHP自动加载查找当前PHP文件,php,codeigniter,Php,Codeigniter,文件:deckclass.php,DOCROOT设置为/var/www/Proj/application/controllers 获取错误:致命错误:在第38行的/var/www/Proj/application/controllers/deckclass.php中找不到类“Cardclass” 为什么搜索当前php文件而不是DOCROOT文件夹 function __autoload($class_name) { //class directories $filename = DOC
function __autoload($class_name)
{
//class directories
$filename = DOCROOT .strtolower($class_name) . ".php";
if ( file_exists($filename) )
{
require_once ($filename);
}
else {
throw new Exception("Unable to load $class_name.");
}
}
$card = new Cardclass();
您可以使用define'ROOT',dirname\u\u FILE\u;并定义'DS',目录分隔符
提示
spl_自动加载_寄存器为
自动加载类。因此,使用_自动加载是非常必要的
不鼓励,将来可能会被弃用或删除
那么代码应该是这样的:
<?php
define('DS', DIRECTORY_SEPARATOR);
define('ROOT', dirname(__FILE__)); //This is full path
spl_autoload_register('Autoloader'); //You can use annonymous function here
function Autoloader($class_name){
$filename = ROOT.DS.strtolower($class_name).".php";
var_dump($filename);
if(file_exists($filename)){
require_once ($filename);
}else{
throw new Exception("Unable to load ".$class_name."in".$filename);
}
}
$card = new Cardclass();
自动加载时:
<?php
define('DS', DIRECTORY_SEPARATOR);
define('ROOT', dirname(__FILE__)); //This is full path
function __autoload($class_name){
$filename = ROOT.DS.strtolower($class_name).".php";
var_dump($filename);
if(strpos($class, 'CI_') !== 0) {
if(file_exists($filename)){
require_once ($filename);
}else{
throw new Exception("Unable to load ".$class_name."in".$filename);
}
}
}
$card = new Cardclass();
您的控制器文件夹中是否有任何名为Cardclass的php文件?是的,它名为Cardclass.php,然后只需执行echo$filename;检查输出路径我删除了我的答案,因为它不是一个解决方案,我想出于某种原因,自动加载方法没有注册,否则您可以打印文件名,不幸的是,我不知道为什么。致命错误:在spl_autoload_寄存器'Autoloader'上未找到带有消息'Function'Autoloader'的未捕获异常'LogicException';无法加载请求的文件:helpers/spl_autoload_helper.php我也在使用PHP5.3。@Decrate2K“echo”当前php版本的结果是什么:'。phpversion;它说当前的版本是5.3.10-1Let-us。