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邮件专题
Oct 09 PHP
php数组函数序列之array_unique() - 去除数组中重复的元素值
Oct 29 PHP
ecshop 批量上传(加入自定义属性)
Mar 20 PHP
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
Jun 23 PHP
Yii2框架dropDownList下拉菜单用法实例分析
Jul 18 PHP
php版微信发红包接口用法示例
Sep 23 PHP
php+mongodb判断坐标是否在指定多边形区域内的实例
Oct 28 PHP
PHP fprintf()函数用法讲解
Feb 16 PHP
php无限级分类实现评论及回复功能
Feb 18 PHP
mac pecl 安装php7.1扩展教程
Oct 17 PHP
laravel框架学习笔记之组件化开发实现方法
Feb 01 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
Apr 04 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
Protoss魔法科技
2020/03/14 星际争霸
PHP中is_file()函数使用指南
2015/05/08 PHP
Zend Framework教程之响应对象的封装Zend_Controller_Response实例详解
2016/03/07 PHP
PHP单例模式详解及实例代码
2016/12/21 PHP
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
Yii使用DbTarget实现日志功能的示例代码
2020/07/21 PHP
文件编码导致jquery失效的解决方法
2013/06/26 Javascript
jq实现酷炫的鼠标经过图片翻滚效果
2014/03/12 Javascript
轻松创建nodejs服务器(10):处理上传图片
2014/12/18 NodeJs
jQuery实现仿Alipay支付宝首页全屏焦点图切换特效
2015/05/04 Javascript
jQuery实现为控件添加水印文字效果(附源码)
2015/12/02 Javascript
全面解析JavaScript的Backbone.js框架中的Router路由
2016/05/05 Javascript
基于bootstrap按钮式下拉菜单组件的搜索建议插件
2017/03/25 Javascript
详解基于node的前端项目编译时内存溢出问题
2017/08/01 Javascript
快速解决brew安装特定版本flow的问题
2018/05/17 Javascript
jQuery实现动态加载select下拉列表项功能示例
2018/05/31 jQuery
微信网页授权并获取用户信息的方法
2018/07/30 Javascript
vue-cli 构建骨架屏的方法示例
2018/11/08 Javascript
JS基于开关思想实现的数组去重功能【案例】
2019/02/18 Javascript
从0到1构建vueSSR项目之路由的构建
2019/03/07 Javascript
通过图带你深入了解vue的响应式原理
2019/06/21 Javascript
[04:11]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/01/30 DOTA
Python中列表(list)操作方法汇总
2014/08/18 Python
Python实现利用163邮箱远程关电脑脚本
2018/02/22 Python
Python实现的线性回归算法示例【附csv文件下载】
2018/12/29 Python
Django框架模板用法入门教程
2019/11/04 Python
python 深度学习中的4种激活函数
2020/09/18 Python
python实现双人五子棋(终端版)
2020/12/30 Python
自我评价个人范文
2013/12/16 职场文书
出纳岗位职责范本
2015/03/31 职场文书
2015年小学语文教学工作总结
2015/05/25 职场文书
入党积极分子群众意见
2015/06/01 职场文书
单位证明范文
2015/06/18 职场文书
街道办残联2016年助残日活动总结
2016/04/01 职场文书
六年级作文之预言作文
2019/10/25 职场文书