php类的自动加载操作实例详解


Posted in PHP onSeptember 28, 2016

本文实例讲述了php类的自动加载操作。分享给大家供大家参考,具体如下:

类的自动加载

在外面的页面中,并不需要去引入类文件,但程序会在需要一个类的时候自动去“动态加载”该类。

① 创建一个对象的时候new

② 直接使用一个类名(操作静态属性与方法)

使用__autoload魔术函数

当出现两种情况时候,就会调用该函数,该函数需要我们预先定义,在其中写好加载类文件的通用语句

function __autoload($name){
  require './lib/'.$name.'.class.php';
}

使用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 相关文章推荐
PHP4与PHP3中一个不兼容问题的解决方法
Oct 09 PHP
linux下为php添加curl扩展的方法
Jul 29 PHP
深入php self与$this的详解
Jun 08 PHP
解析php中获取url与物理路径的总结
Jun 21 PHP
PHP两种去掉数组重复值的方法比较
Jun 19 PHP
PHP常用数组函数介绍
Jul 28 PHP
laravel容器延迟加载以及auth扩展详解
Mar 02 PHP
PHP中使用array函数新建一个数组
Nov 19 PHP
学习php设计模式 php实现装饰器模式(decorator)
Dec 07 PHP
php中preg_replace_callback函数简单用法示例
Jul 21 PHP
php使用strip_tags()去除html标签仍有空白的解决方法
Jul 28 PHP
ThinkPHP打水印及设置水印位置的方法
Oct 14 PHP
PHP对象克隆clone用法示例
Sep 28 #PHP
PHP简单遍历对象示例
Sep 28 #PHP
PHP标准类(stdclass)用法示例
Sep 28 #PHP
PHP类型约束用法示例
Sep 28 #PHP
PHP类和对象相关系统函数与运算符小结
Sep 28 #PHP
PHP序列化操作方法分析
Sep 28 #PHP
PHP类的特性实例分析
Sep 28 #PHP
You might like
轻松入门: 煮好咖啡的七个诀窍
2021/03/03 冲泡冲煮
php对图像的各种处理函数代码小结
2013/07/08 PHP
PHP实现将视频转成MP4并获取视频预览图的方法
2015/03/12 PHP
PHP使用in_array函数检查数组中是否存在某个值
2015/03/25 PHP
php微信开发之谷歌测距
2018/06/14 PHP
详解laravel安装使用Passport(Api认证)
2018/07/27 PHP
详解PHP的抽象类和抽象方法以及接口总结
2019/03/15 PHP
php对mongodb的扩展(小试牛刀)
2012/11/11 Javascript
Js点击弹出下拉菜单效果实例
2013/08/12 Javascript
利用a标签自动解析URL分析网址实例
2014/10/20 Javascript
jQuery Mobile动态刷新页面样式的实现方法
2016/05/28 Javascript
BootStrap+Angularjs+NgDialog实现模式对话框
2016/08/24 Javascript
微信小程序 Canvas增强组件实例详解及源码分享
2017/01/04 Javascript
JS字符串长度判断,超出进行自动截取的实例(支持中文)
2017/03/06 Javascript
JavaScript组件开发之输入框加候选框
2017/03/10 Javascript
BootStrap 导航条实例代码
2017/05/18 Javascript
Redux 和 Mobx的选择问题:让你不再困惑!
2017/09/18 Javascript
从零开始最小实现react服务器渲染详解
2018/01/26 Javascript
一起深入理解js中的事件对象
2021/02/06 Javascript
python解析xml模块封装代码
2014/02/07 Python
Tesserocr库的正确安装方式
2018/10/19 Python
python 构造三维全零数组的方法
2018/11/12 Python
Django使用消息提示简单的弹出个对话框实例
2019/11/15 Python
TensorFlow索引与切片的实现方法
2019/11/20 Python
Django 后台带有字典的列表数据与页面js交互实例
2020/04/03 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
2020/10/20 Python
Django中的DateTimeField和DateField实现
2021/02/24 Python
荟萃全球保健品:维他购
2018/05/09 全球购物
《藏戏》教学反思
2014/02/11 职场文书
老人节标语大全
2014/10/08 职场文书
2014年司法局工作总结
2014/12/11 职场文书
2015年党员创先争优承诺书
2015/01/22 职场文书
2015年党支部公开承诺书
2015/01/22 职场文书
试用期转正工作总结2015
2015/05/28 职场文书
小学数学国培研修日志
2015/11/13 职场文书
2016年“世界环境日”校园广播稿
2015/12/18 职场文书