php类自动加载失败的处理方案及实例代码

admin3年前PHP教程33

1、打开相应的PHP代码文件。

2、添加“$class = str_replace("\\","/",$class);”代码即可。

文件在本地win系统下测试无异常,代码如下:

?

1
2
3
4
5
6
function stu_autoload($class){
    if(file_exists($class.".php")){        require ( $class.".php");
    }else{        die("unable to autoload Class $class");
    }
}
spl_autoload_register("stu_autoload");






部署到Ubuntu服务器上异常,报错为 unable to autoload Class xxxxxx

解决方案

根据报错,发现 $class 的值需要形如 stuApp\dao\StuInfo 才可行, 文件路径需要将 \ 转义成 /,因此添加一行代码即可。

?

1
$class = str_replace("\\","/",$class);






综上,修改后的自动加载代码如下:

?

1
2
3
4
5
6
7
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()作用一样,不过此时可以应对更多的情形

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//注册用于自动加载的函数
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';
  }
}






?

1
2
3
4
5
6
7
//若注册的是方法而不是函数,则需要使用数组
spl_autoload_register(
  //非静态方法
  array($this,'model'),
  //静态方法
  array(__CLASS__,'controller')
);






项目场景应用

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//自动加载
//控制器类 模型类 核心类
//对于所有的类分为可以确定的类以及可以扩展的类
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类自动加载失败的解决办法内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:py/php/jiaocheng/33918

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

PHP设计模式之原型模式示例详解

前言原型模式其实更形象的来说应该叫克隆模式。它主要的行为是对对象进行克隆,但是又把被克隆的对象称之为最初的原型,于是,这个模式就这样被命名了。说真的,从使用方式来看真的感觉叫克隆模式更贴切一些。Gof...

聊聊PHP中的 === 运算符为什么比 == 快

在上一篇《聊聊PHP中require_once()函数为什么不好用》中给大家介绍了PHP中require_once()为什么不好用的原因,感兴趣的朋友可以去阅读了解一下~那么本文将给大家介绍PHP中的...

显卡GPU服务器的特点和优势是什么租用成都显卡服务器有哪些方面的优势

显卡服务器也称为GPU服务器。GPU服务器是一种用于计算机科学技术领域的计算机硬件及其配套设备。其主要功能有:3D地理空间数据可视化、视频稳定、滤波、马赛克、转码等应用研究与教育,如成像与处理等天体物...

linux系统的新加披gpu服务器怎么查看配置信息

linux系统的新加披gpu服务器怎么查看配置信息?查看操作系统信息:cat/etc/redhat-release操作系统详细发行信息:lsb_release-aCPU信息:lscpuCPU具体型号c...

GPU服务器应用场景租用美国gpu服务器厂家有哪些

面对庞大的数据量,我们不能要求人工计算,并且CPU不能处理大量数据集以及并行操作,此时GPU的出现帮助用户解决痛点,可以执行处理高速、实时的并行任务。因而,GPU的特性也就决定了GPU服务器的使用场景...

怎么看江西gpu服务器配置和报价呢

在选择GPU服务器时,了解其配置和报价是非常重要的。以下是一些关于如何看GPU服务器配置和报价的建议:GPU类型和数量:首先需要了解GPU服务器所配备的GPU型号和数量。不同型号和数量的GPU有着不同...