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 相关文章推荐
Windows IIS PHP 5.2 安装与配置方法
Jun 08 PHP
有关PHP性能优化的介绍
Jun 20 PHP
php源码分析之DZX1.5加密解密函数authcode用法
Jun 17 PHP
PHP文件缓存类实现代码
Oct 26 PHP
php文档工具PHP Documentor安装与使用方法
Jan 25 PHP
Laravel5中防止XSS跨站攻击的方法
Oct 10 PHP
微信公众号OAuth2.0网页授权问题浅析
Jan 21 PHP
php批量删除操作(数据访问)
May 23 PHP
php之可变函数的实例详解
Sep 13 PHP
PHP实现的基于单向链表解决约瑟夫环问题示例
Sep 30 PHP
PHP面向对象程序设计(OOP)之方法重写(override)操作示例
Dec 21 PHP
实例讲解通过​PHP创建数据库
Jan 20 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
php增删改查示例自己写的demo
2013/09/04 PHP
php传值方式和ajax的验证功能
2017/03/27 PHP
什么是JavaScript
2009/08/13 Javascript
jQuery控制输入框只能输入数值的小例子
2013/03/20 Javascript
jquery中each遍历对象和数组示例
2014/08/05 Javascript
基于Jquery实现万圣节快乐特效
2015/11/01 Javascript
JavaScript iframe数据共享接口实现方法
2016/01/06 Javascript
JavaScript正则表达式的分组匹配详解
2016/02/13 Javascript
实践中学习AngularJS表单
2016/03/21 Javascript
纯JS代码实现一键分享功能
2016/04/20 Javascript
js获取元素的标签名实现方法
2016/10/08 Javascript
Angularjs分页查询的实现
2017/02/24 Javascript
基于Vue实现tab栏切换内容不断实时刷新数据功能
2017/04/13 Javascript
jquery鼠标悬停导航下划线滑出效果
2017/09/29 jQuery
jQuery实现输入框的放大和缩小功能示例
2018/07/21 jQuery
vuejs实现ready函数加载完之后执行某个函数的方法
2018/08/31 Javascript
在vue中封装的弹窗组件使用队列模式实现方法
2020/07/23 Javascript
[02:43]DOTA2英雄基础教程 半人马战行者
2014/01/13 DOTA
从零学Python之引用和类属性的初步理解
2014/05/15 Python
Python的Bottle框架的一些使用技巧介绍
2015/04/08 Python
Python反射用法实例简析
2017/12/22 Python
python opencv实现任意角度的透视变换实例代码
2018/01/12 Python
python实现堆和索引堆的代码示例
2018/03/19 Python
python中将\\uxxxx转换为Unicode字符串的方法
2018/09/06 Python
Python3+Appium安装使用教程
2019/07/05 Python
html5自带表单验证体验优化及提示气泡修改功能
2017/09/12 HTML / CSS
奥地利网上现代灯具和灯饰店:Lampenwelt.at
2018/01/29 全球购物
代理商会议邀请函
2014/01/27 职场文书
新护士岗前培训制度
2014/02/02 职场文书
心理学专业大学生职业生涯规划范文
2014/02/19 职场文书
捐资助学倡议书
2014/04/15 职场文书
大学生评语大全
2014/04/18 职场文书
5s标语大全
2014/06/23 职场文书
研究生简历自我评价范文
2014/09/13 职场文书
广告策划的实习心得体会总结!
2019/07/22 职场文书
AJAX实现省市县三级联动效果
2021/10/16 Javascript