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下 PHP4.0与oracle 8的连接设置
Oct 09 PHP
PHP与SQL注入攻击[一]
Apr 17 PHP
PHP生成HTML静态页面实例代码
Aug 31 PHP
php设计模式 Composite (组合模式)
Jun 26 PHP
解析crontab php自动运行的方法
Jun 24 PHP
php判断字符串在另一个字符串位置的方法
Feb 27 PHP
PHP实现数字补零功能的2个函数介绍
May 12 PHP
PHP实现的简易版图片相似度比较
Jan 07 PHP
laravel学习教程之关联模型
Jul 30 PHP
php PDO异常处理详解
Nov 20 PHP
php实现简单的权限管理的示例代码
Aug 25 PHP
简单实现php上传文件功能
Sep 21 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中Stream(流)
2015/06/08 PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
2017/11/28 PHP
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】
2019/03/07 PHP
thinkphp5框架实现数据库读取的数据转换成json格式示例
2019/10/10 PHP
PHP的HTTP客户端Guzzle简单使用方法分析
2019/10/30 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
javascript 数组学习资料收集
2010/04/11 Javascript
非阻塞动态加载javascript广告实现代码
2010/11/17 Javascript
Event altKey,ctrlKey,shiftKey属性解析
2013/12/18 Javascript
动态创建script标签实现跨域资源访问的方法介绍
2014/02/28 Javascript
Nodejs为什么选择javascript为载体语言
2015/01/13 NodeJs
jQuery中的一些小技巧
2017/01/18 Javascript
vue v-on监听事件详解
2017/05/17 Javascript
详解如何使用PM2将Node.js的集群变得更加容易
2017/11/15 Javascript
three.js 入门案例详解
2018/01/23 Javascript
JavaScript的词法结构精华篇
2018/10/17 Javascript
详解vue beforeRouteEnter 异步获取数据给实例问题
2019/08/09 Javascript
jquery 遍历hash操作示例【基于ajax交互】
2019/10/12 jQuery
环形加载进度条封装(Vue插件版和原生js版)
2019/12/04 Javascript
微信小程序 scroll-view 实现锚点跳转功能
2019/12/12 Javascript
js、jquery实现列表模糊搜索功能过程解析
2020/03/27 jQuery
使用python搭建Django应用程序步骤及版本冲突问题解决
2013/11/19 Python
Python的Flask框架应用调用Redis队列数据的方法
2016/06/06 Python
Python实现登录接口的示例代码
2017/07/21 Python
Python基于socket实现简单的即时通讯功能示例
2018/01/16 Python
Python实现的根据文件名查找数据文件功能示例
2018/05/02 Python
Python语言检测模块langid和langdetect的使用实例
2019/02/19 Python
python使用BeautifulSoup与正则表达式爬取时光网不同地区top100电影并对比
2019/04/15 Python
pywinauto自动化操作记事本
2019/08/26 Python
selenium WebDriverWait类等待机制的实现
2020/03/18 Python
365 Tickets英国:全球景点门票
2019/07/06 全球购物
小学学校评估方案
2014/06/08 职场文书
食品仓管员岗位职责
2015/04/01 职场文书
毕业论文答辩开场白和结束语
2015/05/27 职场文书
导游词之永济鹳雀楼
2020/01/16 职场文书