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学习之输出字符串(echo,print,printf,print_r和var_dump)
Apr 17 PHP
php cookies中删除的一般赋值方法
May 07 PHP
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
Jul 23 PHP
浅析php插件 Simple HTML DOM 用DOM方式处理HTML
Jul 01 PHP
php中的常用魔术方法总结
Aug 02 PHP
PHP session文件独占锁引起阻塞问题解决方法
May 12 PHP
php通过执行CutyCapt命令实现网页截图的方法
Sep 30 PHP
PHP合并数组函数array_merge用法分析
Feb 17 PHP
PHP不使用内置函数实现字符串转整型的方法示例
Jul 03 PHP
PHP实现十进制数字与二十六进制字母串相互转换操作示例
Aug 10 PHP
php二维数组按某个键值排序的实例讲解
Feb 15 PHP
对laravel in 查询的使用方法详解
Oct 09 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
在windows iis5下安装php4.0+mysql之我见
2006/10/09 PHP
Snoopy类使用小例子
2008/04/15 PHP
详解PHP swoole process的使用方法
2017/08/26 PHP
有关DOM元素与事件的3个谜题
2010/11/11 Javascript
js对数字的格式化使用说明
2011/01/12 Javascript
javascript:history.go()和History.back()的区别及应用
2012/11/25 Javascript
关于IE BUG与字符串截取substr的解决办法
2013/04/10 Javascript
js中运算符&& 和 || 的使用记录
2014/08/21 Javascript
ECMAScript 5严格模式(Strict Mode)介绍
2015/03/02 Javascript
Boostrap入门准备之border box
2016/05/09 Javascript
javaScript嗅探执行神器-sniffer.js
2017/02/14 Javascript
老生常谈jquery中detach()和remove()的区别
2017/03/02 Javascript
实例解析ES6 Proxy使用场景介绍
2018/01/08 Javascript
JavaScript基础心法 数据类型
2018/03/05 Javascript
vue页面切换到滚动页面显示顶部的实例
2018/03/13 Javascript
详解在vue-cli项目下简单使用mockjs模拟数据
2018/10/19 Javascript
实例介绍JavaScript中多种组合继承
2019/01/20 Javascript
IE浏览器下JS脚本提交表单后,不能自动提示问题解决方法
2019/06/04 Javascript
vue 实现通过vuex 存储值 在不同界面使用
2019/11/11 Javascript
vue实现计算器功能
2020/02/22 Javascript
JS实现烟花爆炸效果
2020/03/10 Javascript
js实现ajax的用户简单登入功能
2020/06/18 Javascript
JavaScript实现表单验证功能
2020/12/09 Javascript
Python做文本按行去重的实现方法
2016/10/19 Python
python的sorted用法详解
2019/06/25 Python
Python数据可视化:顶级绘图库plotly详解
2019/12/07 Python
详解HTML5中div和section以及article的区别
2015/07/14 HTML / CSS
网络公司美工设计工作个人的自我评价
2013/11/03 职场文书
网吧最新创业计划书范文
2014/03/27 职场文书
毕业生就业意向书
2014/04/01 职场文书
安全生产大检查方案
2014/05/07 职场文书
2015年七夕情人节感言
2015/08/03 职场文书
Ajax是什么?Ajax高级用法之Axios技术
2021/04/21 Javascript
python Django框架快速入门教程(后台管理)
2021/07/21 Python
python对文档中元素删除,替换操作
2022/04/02 Python
使用 Docker Compose 构建复杂的多容器App
2022/04/30 Servers