PHP autoload使用方法及步骤详解


Posted in PHP onSeptember 05, 2020

我们知道在PHP4里面,当我们使用一个类的时候,必须将该类所以文件使用include或require加进来,这样我们就可以使用类了。
而对于PHP5来说也可以使用在PHP4里面的方式,将类文件包进来,但当有了__autoload之后,这种情况就可以靠编写规则也实现。

以下代码:

<?php
 $obj_A = new clsA();
 $obj_B = new clsB();
 ?>
 PHP4下正确写法为:
 <?php
 //PHP4 写法,之前必须加载类文件
 include_once "cls/clsA.php";
 include_once "cls/clsB.php";
 $obj_A = new clsA();
 $obj_B = new clsB();
 ?>

处理加载步骤为:

1,加载类文件。

2,实例化类。

PHP5下使用__autoload()(自动加载)的正确写法为:

<?php
 // PHP5 Used __autoload function
 $obj_A = new clsA();
 $obj_B = new clsB();
 function __autoload($className){
 include_once "cls/$className.php";
 }
 ?>

处理加载步骤为(使用autoload函数):

1,创建对象(伪实例)

2,调用__autoload函数,将伪实例的类名传入

3,使用__autoload函数中,预先写好的加载规则进行加载类文件

4,实例化对象(真实实例)

因此,我们可以看出,对于PHP5的autoload函数,必须给定规则,否则一点用没有。

对于PHP5的__autoload函数的使用时需要注意或完成如下事情。

1,__autoload函数是用在类外面,而不是在类里面的函数。(__autoload也是被PHP5保护的关键字之一)

2,完成对__autoload函数加载规则的编码。

如上,当知道A是在cls目录中,而B是在cls/cls目录中。则编写__autoload加载规则就是必要的。

<?php
 // PHP5 Used __autoload function
 $obj_A = new clsA(); // in "cls" directory!
 $obj_B = new clsB(); // in "cls/cls" directory!
 function __autoload($className){
 if(strtolowwer($className) == "clsb"){
 require_once "cls/cls/$className.php";
 }else{
 include_once "cls/$className.php";
 }
 }
 ?>

总结:因此,对于PHP5的autoload来说,当加载2个以上的文件或考虑到以后的扩展时或代码规范来说可以使用,对于一般的情况,我个人认为没有必 要,但是如果同时使用多个类,加载不同的类文件,对于autoload来说就有必要,只要写入相应的加载规则即可。(我个人认为,该函数的提出,主要是规 范编码)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php中通过smtp发邮件的类,测试通过
Jan 22 PHP
PHP 程序授权验证开发思路
Jul 09 PHP
php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
May 16 PHP
php使用GD实现颜色渐变实例
Jun 02 PHP
PHP不使用递归的无限级分类简单实例
Nov 05 PHP
Yii框架参数化查询中IN查询只能查询一个的解决方法
May 20 PHP
PHP基于SimpleXML生成和解析xml的方法示例
Jul 17 PHP
PHP读取CSV大文件导入数据库的实例
Jul 24 PHP
PHP简单实现二维数组赋值与遍历功能示例
Oct 19 PHP
利用Homestead快速运行一个Laravel项目的方法详解
Nov 14 PHP
PHP pthreads v3下worker和pool的使用方法示例
Feb 21 PHP
PHP设计模式(三)建造者模式Builder实例详解【创建型】
May 02 PHP
PHP数组访问常用方法解析
Sep 05 #PHP
XAMPP升级PHP版本实现步骤解析
Sep 04 #PHP
php使用Swoole实现毫秒级定时任务的方法
Sep 04 #PHP
Laravel Reponse响应客户端示例详解
Sep 03 #PHP
PHP 实现base64编码文件上传出现问题详解
Sep 01 #PHP
PHP copy函数使用案例代码解析
Sep 01 #PHP
PHP超全局变量实现原理及代码解析
Sep 01 #PHP
You might like
在DC的漫画和电影中,蝙蝠侠的宿敌,小丑的真名是什么?
2020/04/09 欧美动漫
浏览器关闭后,能继续执行的php函数(ignore_user_abort)
2012/08/01 PHP
基于php设计模式中单例模式的应用分析
2013/05/15 PHP
如何使用微信公众平台开发模式实现多客服
2016/01/06 PHP
用jquery设置按钮的disabled属性的实现代码
2010/11/28 Javascript
javascript一元操作符(递增、递减)使用示例
2013/08/07 Javascript
探讨js字符串数组拼接的性能问题
2014/10/11 Javascript
js提交form表单,并传递参数的实现方法
2016/05/25 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(一)之数据支持json字符串、list集合
2016/08/11 Javascript
BootStrap实现邮件列表的分页和模态框添加邮件的功能
2016/10/13 Javascript
Nodejs 获取时间加手机标识的32位标识实现代码
2017/03/07 NodeJs
js判断PC端与移动端跳转
2020/12/24 Javascript
详解vue2.0 使用动态组件实现 Tab 标签页切换效果(vue-cli)
2017/08/30 Javascript
Vue动态获取width的方法
2018/08/22 Javascript
在vue使用clipboard.js进行一键复制文本的实现示例
2019/01/15 Javascript
使用Vue开发自己的Chrome扩展程序过程详解
2019/06/21 Javascript
JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】
2019/07/11 jQuery
layui实现根据table数据判断按钮显示情况的方法
2019/09/26 Javascript
layui 阻止图片上传的实例(before方法)
2019/09/26 Javascript
JS使用正则表达式实现常用的表单验证功能分析
2020/04/30 Javascript
Python IDLE入门简介
2017/12/08 Python
Python编程中flask的简介与简单使用
2018/12/28 Python
Python反爬虫技术之防止IP地址被封杀的讲解
2019/01/09 Python
Python实现FTP弱口令扫描器的方法示例
2019/01/31 Python
我们为什么要减少Python中循环的使用
2019/07/10 Python
python在CMD界面读取excel所有数据的示例
2020/09/28 Python
CSS3制作精致的照片墙特效
2016/06/07 HTML / CSS
澳大利亚家用电器在线商店:Billy Guyatts
2020/05/05 全球购物
如何整合JQuery和Prototype
2014/01/31 面试题
Jdbc数据访问技术面试题
2012/03/30 面试题
口腔工艺技术专业毕业生自荐信
2013/09/27 职场文书
校园广播稿500字
2014/02/04 职场文书
喷漆工的岗位职责
2014/03/17 职场文书
2015年纪检监察工作总结
2015/04/08 职场文书
python中pycryto实现数据加密
2022/04/29 Python
volatile保证可见性及重排序方法
2022/08/05 Java/Android