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 相关文章推荐
模仿OSO的论坛(五)
Oct 09 PHP
php简单封装了一些常用JS操作
Feb 25 PHP
Sorting Array Values in PHP(数组排序)
Sep 15 PHP
joomla实现注册用户添加新字段的方法
May 05 PHP
Laravel重写用户登录简单示例
Oct 08 PHP
WAF的正确bypass
Jan 05 PHP
php图像验证码生成代码
Jun 08 PHP
实例讲解YII2中多表关联的使用方法
Jul 21 PHP
Laravel 批量更新多条数据的示例
Nov 27 PHP
php通过header发送自定义数据方法
Jan 18 PHP
PHP异常类及异常处理操作实例详解
Dec 19 PHP
解决laravel5.4下的group by报错的问题
Oct 16 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 字符截取 解决中文的截取问题,不用mb系列
2009/09/29 PHP
浅析PHP 按位与或 (^ 、&)
2013/06/21 PHP
PHP文件锁定写入实例解析
2014/07/14 PHP
为指定元素增加样式的js代码
2009/12/09 Javascript
JavaScript在IE和Firefox浏览器下的7个差异兼容写法小结
2010/06/18 Javascript
基于jquery的多功能软键盘插件
2012/07/25 Javascript
JS操作CSS随机改变网页背景实现思路
2014/03/10 Javascript
jQuery操作元素css样式的三种方法
2014/06/04 Javascript
jquery用offset()方法获得元素的xy坐标
2014/09/06 Javascript
JavaScript的面向对象编程基础
2015/08/13 Javascript
JavaScript+html5 canvas实现本地截图教程
2020/04/16 Javascript
使用jQuery监听DOM元素大小变化
2016/02/24 Javascript
Ajax跨域实现代码(后台jsp)
2017/01/21 Javascript
详解webpack与SPA实践之开发环境搭建
2017/12/18 Javascript
JavaScript基于面向对象实现的无缝滚动轮播示例
2020/01/17 Javascript
JavaScript监听一个DOM元素大小变化
2020/04/26 Javascript
使用纯前端JavaScript实现Excel导入导出方法过程详解
2020/08/07 Javascript
Python 元类使用说明
2009/12/18 Python
python类和继承用法实例
2015/07/07 Python
python机器学习实战之最近邻kNN分类器
2017/12/20 Python
tensorflow建立一个简单的神经网络的方法
2018/02/10 Python
python如何读写json数据
2018/03/21 Python
Python通过递归获取目录下指定文件代码实例
2019/11/07 Python
tensorflow实现二维平面模拟三维数据教程
2020/02/11 Python
Python模拟登录和登录跳转的参考示例
2020/10/30 Python
乌克兰数字设备、配件和智能技术的连锁商店:KTC
2020/08/18 全球购物
财务部岗位职责
2013/11/19 职场文书
预备党员政审材料
2014/02/04 职场文书
2013年军训通讯稿
2014/02/05 职场文书
公司建议书怎么写
2014/05/15 职场文书
银行求职信范文
2014/05/26 职场文书
工作失误检讨书范文
2015/01/26 职场文书
幼儿教师个人总结
2015/02/05 职场文书
自我推荐信格式模板
2015/03/24 职场文书
FP-growth算法发现频繁项集——发现频繁项集
2021/06/24 Python
Win11怎么进入安全模式?Windows 11进入安全模式的方法
2021/11/21 数码科技