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的FTP学习(四)
Oct 09 PHP
转PHP手册及PHP编程标准
Dec 17 PHP
PHP 5.0对象模型深度探索之对象复制
Mar 27 PHP
php获取服务器端mac和客户端mac的地址支持WIN/LINUX
May 15 PHP
php截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析
Jun 10 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(三)
Jun 23 PHP
PHP使用Mysql事务实例解析
Sep 08 PHP
php中file_get_contents与curl性能比较分析
Nov 08 PHP
thinkphp框架下实现登录、注册、找回密码功能
Apr 06 PHP
微信支付开发维权通知实例
Jul 12 PHP
Laravel框架分页实现方法分析
Jun 12 PHP
Yii2结合Workerman的websocket示例详解
Sep 10 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
用PHP实现登陆验证码(类似条行码状)
2006/10/09 PHP
PHP 八种基本的数据类型小结
2011/06/01 PHP
PHP中全局变量global和$GLOBALS[]的区别分析
2012/08/06 PHP
php中strtotime函数用法详解
2014/11/15 PHP
Yii框架引用插件和ckeditor中body与P标签去除的方法
2017/01/19 PHP
Gird组件 Part-3:范例RSSFeed Viewer
2007/03/10 Javascript
JS面向对象、prototype、call()、apply()
2009/05/14 Javascript
js 弹出框 替代浏览器的弹出框
2010/10/29 Javascript
js中点击空白区域时文本框与隐藏层的显示与影藏问题
2013/08/26 Javascript
在子窗口中关闭父窗口的一句代码
2013/10/21 Javascript
JavaScript实现瀑布流以及加载效果
2017/02/11 Javascript
使用vue.js编写蓝色拼图小游戏
2017/03/17 Javascript
微信小程序中时间戳和日期的相互转换问题
2018/07/09 Javascript
jQuery实现轮播图及其原理详解
2020/04/12 jQuery
VUE搭建手机商城心得和遇到的坑
2019/02/21 Javascript
JavaScript刷新页面的几种方法总结
2019/03/28 Javascript
pm2发布node配置文件ecosystem.json详解
2019/05/15 Javascript
解决echarts echarts数据动态更新和dataZoom被重置问题
2020/07/20 Javascript
[07:43]《辉夜杯》公开赛晋级外卡赛战队—TRG训练生活探秘
2015/12/11 DOTA
python3.3使用tkinter开发猜数字游戏示例
2014/03/14 Python
python爬虫中get和post方法介绍以及cookie作用
2018/02/08 Python
python 将字符串转换成字典dict的各种方式总结
2018/03/23 Python
python实现Windows电脑定时关机
2018/06/20 Python
对Python中创建进程的两种方式以及进程池详解
2019/01/14 Python
python xlwt如何设置单元格的自定义背景颜色
2019/09/03 Python
浅谈Pytorch中的自动求导函数backward()所需参数的含义
2020/02/29 Python
Python-for循环的内部机制
2020/06/12 Python
python性能测试工具locust的使用
2020/12/28 Python
《鱼游到了纸上》教学反思
2014/02/20 职场文书
大学优秀班主任事迹材料
2014/05/02 职场文书
岗位说明书标准范本
2014/07/30 职场文书
教师四风问题对照检查材料
2014/09/26 职场文书
党员违纪检讨书怎么写
2014/11/01 职场文书
投标邀请书范本
2015/02/02 职场文书
详解Java实践之抽象工厂模式
2021/06/18 Java/Android
mysql使用FIND_IN_SET和group_concat两个方法查询上下级机构
2022/04/20 MySQL