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代码优化及php相关问题总结
Oct 09 PHP
基于文本的留言簿
Oct 09 PHP
用PHP和ACCESS写聊天室(一)
Oct 09 PHP
PHP开发中四种查询返回结果分析
Jan 02 PHP
php产生随机数的两种方法实例代码 输出随机IP
Apr 08 PHP
浅析PHP绘图技术
Jul 03 PHP
Yii的CDbCriteria查询条件用法实例
Dec 04 PHP
PHP的Yii框架中YiiBase入口类的扩展写法示例
Mar 17 PHP
curl 出现错误的调试方法(必看)
Feb 13 PHP
Yii框架实现图片上传的方法详解
May 20 PHP
PHP DB 数据库连接类定义与用法示例
Mar 11 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
May 27 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单链表实现代码分享
2016/07/04 PHP
解决Laravel自定义类引入和命名空间的问题
2019/10/15 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
2020/03/30 PHP
你必须知道的Javascript知识点之"字面量和对应类型"说明介绍
2013/04/23 Javascript
JavaScript中发布/订阅模式的简单实例
2014/11/05 Javascript
JavaScript String 对象常用方法总结
2016/04/28 Javascript
动态JavaScript所造成一些你不知道的危害
2016/09/25 Javascript
JavaScript reduce和reduceRight详解
2016/10/24 Javascript
textarea 在浏览器中固定大小和禁止拖动的实现方法
2016/12/03 Javascript
用vue和node写的简易购物车实现
2017/04/25 Javascript
小程序自定义组件实现城市选择功能
2018/07/18 Javascript
create-react-app安装出错问题解决方法
2018/09/04 Javascript
vue中slot(插槽)的介绍与使用
2018/11/12 Javascript
如何使用JavaScript实现栈与队列
2019/06/24 Javascript
JS实现水平移动与垂直移动动画
2019/12/19 Javascript
es6 for循环中let和var区别详解
2020/01/12 Javascript
javascript实现获取中文汉字拼音首字母
2020/05/19 Javascript
[00:17]DOTA2荣耀之路5:It’s a disastah!
2018/05/28 DOTA
python调用shell的方法
2013/11/20 Python
python在Windows8下获取本机ip地址的方法
2015/03/14 Python
Python多进程同步简单实现代码
2016/04/27 Python
python二分查找算法的递归实现方法
2016/05/12 Python
Python实现多线程抓取网页功能实例详解
2017/06/08 Python
通过python顺序修改文件名字的方法
2018/07/11 Python
python 找出list中最大或者最小几个数的索引方法
2018/10/30 Python
python之Flask实现简单登录功能的示例代码
2018/12/24 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
2019/04/29 Python
django queryset 去重 .distinct()说明
2020/05/19 Python
幼儿园大班新学期寄语
2014/01/18 职场文书
幼儿园儿童节主持词
2014/03/21 职场文书
请假条范文大全
2014/04/10 职场文书
雷人标语集锦
2014/06/19 职场文书
开展创先争优活动总结
2014/08/28 职场文书
委托书范本
2014/09/13 职场文书
2015年会计年终工作总结
2015/05/26 职场文书
python编程学习使用管道Pipe编写优化代码
2021/11/20 Python