php类自动加载失败的处理方案及实例代码
1、打开相应的PHP代码文件。
2、添加“$class = str_replace("\\","/",$class);
”代码即可。
文件在本地win系统下测试无异常,代码如下:
function stu_autoload($class){if(file_exists($class.".php")){require ( $class.".php"); }else{die("unable to autoload Class $class"); }}spl_autoload_register("stu_autoload");
【php类自动加载失败的处理方案及实例代码】部署到Ubuntu服务器上异常,报错为 unable to autoload Class xxxxxx
解决方案
根据报错,发现 $class 的值需要形如 stuApp\dao\StuInfo 才可行, 文件路径需要将 \ 转义成 /,因此添加一行代码即可。
$class = str_replace("\\","/",$class);
综上,修改后的自动加载代码如下:
function stu_autoload($class){//路径转义$class = str_replace("\\","/",$class); if(file_exists($class.".php")){require ( $class.".php"); }else{die("unable to autoload Class $class"); }}spl_autoload_register("stu_autoload");
知识点扩充:
类的自动加载
在外面的页面中,并不需要去引入类文件,但程序会在需要一个类的时候自动去“动态加载”该类。
① 创建一个对象的时候new
② 直接使用一个类名(操作静态属性与方法)
使用spl_autoload_register()
用它注册(声明)多个可以代替__autoload()作用的函数,自然也得去定义这些函数,并且函数的作用跟__autoload()作用一样,不过此时可以应对更多的情形
//注册用于自动加载的函数spl_autoload_register("model"); spl_autoload_register("controll"); //分别定义两个函数function model($name){$file = './model/'.$name.'.class.php'; if(file_exists($file)){require './model/'.$name.'.class.php'; }}//如果需要一个类,但当前页面还没加载该类//就会依次调用model()和controll(),直到找到该类文件加载,否则就报错function controll($name){$file = './controll/'.$name.'.class.php'; if(file_exists($file)){require './controll/'.$name.'.class.php'; }}
//若注册的是方法而不是函数,则需要使用数组spl_autoload_register(//非静态方法array($this,'model'),//静态方法array(__CLASS__,'controller'));
项目场景应用
//自动加载//控制器类 模型类 核心类//对于所有的类分为可以确定的类以及可以扩展的类spl_autoload_register('autoLoad'); //先处理确定的框架核心类function autoLoad($name){//类名与类文件映射数组$framework_class_list = array('mySqldb' => './framework/mySqldb.class.php'); if(isset($framework_class_list[$name])){require $framework_class_list[$name]; }elseif(substr($name,-10)=='Controller'){require './application/'.PLATFORM.'/controller/'.$name.'.class.php'; }elseif(substr($name,-6)=='Modele'){require './application/'.PLATFORM.'/modele/'.$name.'.class.php'; }}
到此这篇关于php类自动加载失败的处理方案及实例代码的文章就介绍到这了,更多相关php类自动加载失败的解决办法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 为什么你的路演总会超时()
- python学习之|python学习之 实现QQ自动发送消息
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。
- thinkphp|thinkphp 3.2 如何调用第三方类库
- CGI,FastCGI,PHP-CGI与PHP-FPM
- 使用composer自动加载类文件
- 一个健康的APP和健全的人格大体类似
- 人脸识别|【人脸识别系列】| 实现自动化妆
- 种树郭橐驼传(文言句式+古今异义+词类活用+通假字)