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 相关文章推荐
怎样在PHP中通过ADO调用Asscess数据库和COM程序
Oct 09 PHP
PHP学习笔记之数组篇
Jun 28 PHP
屏蔽机器人从你的网站搜取email地址的php代码
Nov 14 PHP
解析:使用php mongodb扩展时 需要注意的事项
Jun 18 PHP
PHP中VC6、VC9、TS、NTS版本的区别与用法详解
Oct 26 PHP
phpmailer中文乱码问题的解决方法
Apr 22 PHP
CI框架中site_url()和base_url()的区别
Jan 07 PHP
深入解析PHP中foreach语句控制数组循环的用法
Nov 30 PHP
/etc/php-fpm.d/www.conf 配置注意事项
Feb 04 PHP
PHP jpgraph库的配置及生成统计图表:折线图、柱状图、饼状图
May 15 PHP
php学习笔记之mb_strstr的基本使用
Feb 03 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
Sep 07 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-msf源码详解
2017/12/25 PHP
6款经典实用的jQuery小插件及源码(对话框/提示工具等等)
2013/02/04 Javascript
.net,js捕捉文本框回车键事件的小例子(兼容多浏览器)
2013/03/11 Javascript
Javascript变量作用域详解
2013/12/06 Javascript
Jquery api 速查表分享
2015/01/12 Javascript
JavaScript判断浏览器类型的方法
2015/02/10 Javascript
基于jQuery实现多层次的手风琴效果附源码
2015/09/21 Javascript
如何通过js实现图片预览功能【附实例代码】
2016/03/30 Javascript
基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能)
2016/09/02 Javascript
Nodejs中解决cluster模块的多进程如何共享数据问题
2016/11/10 NodeJs
EasyUI学习之DataGird分页显示数据
2016/12/29 Javascript
chorme 浏览器记住密码后input黄色背景处理方法(两种)
2017/11/22 Javascript
简述vue中的config配置
2018/01/23 Javascript
详解微信小程序-扫一扫 wx.scanCode() 扫码大变身
2019/04/30 Javascript
微信小程序云开发实现增删改查功能
2019/05/17 Javascript
使用Vue.js 和Chart.js制作绚丽多彩的图表
2019/06/15 Javascript
js 实现ajax发送步骤过程详解
2019/07/25 Javascript
ES6如何用一句代码实现函数的柯里化
2020/01/18 Javascript
ptyhon实现sitemap生成示例
2014/03/30 Python
Python中使用socket发送HTTP请求数据接收不完整问题解决方法
2015/02/04 Python
Python中动态获取对象的属性和方法的教程
2015/04/09 Python
pymssql数据库操作MSSQL2005实例分析
2015/05/25 Python
Windows系统下使用flup搭建Nginx和Python环境的方法
2015/12/25 Python
Python提取网页中超链接的方法
2016/09/18 Python
Python 删除整个文本中的空格,并实现按行显示
2018/07/24 Python
python实现提取str字符串/json中多级目录下的某个值
2020/02/27 Python
matplotlib 三维图表绘制方法简介
2020/09/20 Python
Spartoo荷兰:鞋子、包包和服装
2018/07/12 全球购物
文明宿舍获奖感言
2014/02/07 职场文书
信息与计算科学专业推荐信
2014/02/23 职场文书
《蚂蚁和蝈蝈》教学反思
2014/02/24 职场文书
2014房屋登记授权委托书
2014/10/13 职场文书
教师党员个人整改措施
2014/10/27 职场文书
倡议书格式及范文
2015/04/29 职场文书
写给同事的离职感言
2015/08/04 职场文书
redis数据结构之压缩列表
2022/03/21 Redis