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
网络资源
Oct 09 PHP
PHP开发中常用的三个表单验证函数使用小结
Mar 03 PHP
php图片上传存储源码并且可以预览
Aug 26 PHP
php 目录遍历、删除 函数的使用介绍
Apr 28 PHP
深入php常用函数的使用汇总
Jun 08 PHP
浅析PHP页面局部刷新功能的实现小结
Jun 21 PHP
可以保证单词完整性的PHP英文字符串截取代码分享
Jul 15 PHP
php中的字符编码转换函数用法示例
Oct 20 PHP
JSON两种结构之对象和数组的理解
Jul 19 PHP
thinkphp框架page类与bootstrap分页(美化)
Jun 25 PHP
TP5框架实现上传多张图片的方法分析
Mar 29 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
动画 《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
探讨如何把session存入数据库
2013/06/07 PHP
zf框架的session会话周期及次数限制使用示例
2014/03/13 PHP
mantis安装、配置和使用中的问题小结
2014/07/14 PHP
简单谈谈php中ob_flush和flush的区别
2014/11/27 PHP
WordPress中获取所使用的模板的页面ID的简单方法
2015/12/31 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
2017/06/15 PHP
基于jquery的地址栏射击游戏代码
2011/03/10 Javascript
jquery获取div宽度的实现思路与代码
2013/01/13 Javascript
JQuery中两个ul标签的li互相移动实现方法
2015/05/18 Javascript
AngularJS中处理多个promise的方式
2016/02/02 Javascript
jQuery ajax方法传递中文时出现中文乱码的解决方法
2016/07/25 Javascript
javascript 判断一个对象为数组的方法
2017/05/03 Javascript
Angular.js实现获取验证码倒计时60秒按钮的简单方法
2017/10/18 Javascript
Bootstrap的aria-label和aria-labelledby属性实例详解
2018/11/02 Javascript
vue踩坑记-在项目中安装依赖模块npm install报错
2019/04/02 Javascript
vue安装遇到的5个报错及解决方法
2019/06/12 Javascript
解决layui批量传值到后台操作时出现传值为空的问题
2019/09/28 Javascript
[02:49]DOTA2完美大师赛首日观众采访
2017/11/23 DOTA
从零学python系列之数据处理编程实例(二)
2014/05/22 Python
python使用PythonMagick将jpg图片转换成ico图片的方法
2015/03/26 Python
安装python时MySQLdb报错的问题描述及解决方法
2018/03/20 Python
对python的unittest架构公共参数token提取方法详解
2018/12/17 Python
安装2019Pycharm最新版本的教程详解
2019/10/22 Python
Python实现列表中非负数保留,负数转化为指定的数值方式
2020/06/04 Python
浅谈keras 模型用于预测时的注意事项
2020/06/27 Python
CSS3教程(7):CSS3嵌入字体
2009/04/02 HTML / CSS
CSS3 实现倒计时效果
2020/11/25 HTML / CSS
同学聚会欢迎辞
2014/01/14 职场文书
个人简历自我评价
2014/02/02 职场文书
《挑山工》的教学反思
2014/02/16 职场文书
《翻越远方的大山》教学反思
2014/04/13 职场文书
中学生英语演讲稿
2014/04/26 职场文书
爱我中华演讲稿
2014/05/20 职场文书
出纳2015年度工作总结范文
2015/10/14 职场文书
2019年幼儿园管理条例范本!
2019/07/17 职场文书