PHP类的自动加载机制实现方法分析


Posted in PHP onJanuary 10, 2019

本文实例讲述了PHP类的自动加载机制实现方法。分享给大家供大家参考,具体如下:

Test1.class.php

<?php
class Test1
{
  public static function test() {
    echo "hello,world!\n";
  }
}

Test2.class.php

<?php
class Test2
{
  public static function test() {
    echo "你好,世界!\n";
  }
}

test.php

<?php
Test1::test();

如果直接写,会报错

Fatal error: Class 'Test1' not found in /home/wwwroot/default/codelabs/test.php on line 3

需要引入文件

<?php
require "Test1.class.php";
Test1::test();

这样就可以访问了。

但是,如果类越来越多,引入的代码就越来越多。

这个时候需要使用__autoload方法。

<?php
Test1::test();
function __autoload($class) {
  //require "Test1.class.php";
  //require "Test2.class.php";
  require __DIR__."/".$class.".class.php"; // __DIR__是当前目录的绝对路径
}

当程序发现没有引入类时,会自动调用这个方法,引入类文件。

进一步优化升级,

支持多个自动加载。

<?php
spl_autoload_register('__autoload1');
spl_autoload_register('__autoload2');
Test1::test();
Test2::test();
// 当检测到无类加载时,会自动调用这个方法
function __autoload1($class) {
  //require "Test1.class.php";
  //require "Test2.class.php";
  require __DIR__."/".$class.".class.php"; // __DIR__是当前目录的绝对路径
}
function __autoload2($class) {
  //require "Test1.class.php";
  //require "Test2.class.php";
  require __DIR__."/".$class.".class.php"; // __DIR__是当前目录的绝对路径
}

很好,很强大!

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP 5.0对象模型深度探索之绑定
Sep 05 PHP
php数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
Oct 31 PHP
提高php运行速度的一些小技巧分享
Jul 03 PHP
php和js如何通过json互相传递数据相关问题探讨
Feb 26 PHP
PHP utf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码
Apr 08 PHP
基于php设计模式中工厂模式详细介绍
May 15 PHP
对淘宝URL中ID提取的PHP代码
Sep 01 PHP
php去除数组中重复数据
Nov 18 PHP
php实现RSA加密类实例
Mar 26 PHP
php函数mkdir实现递归创建层级目录
Oct 27 PHP
PHP实现动态创建XML文档的方法
Mar 30 PHP
php curl获取到json对象并转成数组array的方法
May 31 PHP
PHP验证类的封装与使用方法详解
Jan 10 #PHP
tp5(thinkPHP5)框架数据库Db增删改查常见操作总结
Jan 10 #PHP
tp5(thinkPHP5)框架实现多数据库查询的方法
Jan 10 #PHP
tp5框架使用composer实现日志记录功能示例
Jan 10 #PHP
PHP微信支付结果通知与回调策略分析
Jan 10 #PHP
php如何利用pecl安装mongodb扩展详解
Jan 09 #PHP
PHP如何通过表单直接提交大文件详解
Jan 08 #PHP
You might like
咖啡因含量是由谁决定的?低因咖啡怎么来?低因咖啡适合什么人喝
2021/03/06 新手入门
用PHP实现登陆验证码(类似条行码状)
2006/10/09 PHP
我的论坛源代码(九)
2006/10/09 PHP
Linux下ZendOptimizer的安装与配置方法
2007/04/12 PHP
当json键为数字时的取值方法解析
2013/11/15 Javascript
页面装载js及性能分析方法介绍
2014/03/21 Javascript
通过url查找a元素应用案例
2014/04/29 Javascript
jQuery动态修改超链接地址的方法
2015/02/13 Javascript
jQuery1.9.1源码分析系列(十六)ajax之ajax框架
2015/12/04 Javascript
Js与Jq获取浏览器和对象值的方法
2016/03/18 Javascript
Angularjs中UI Router的使用方法
2016/05/14 Javascript
jQuery Ajax Post 回调函数不执行问题的解决方法
2016/08/15 Javascript
Vue.js每天必学之过渡与动画
2016/09/06 Javascript
浅谈vue.js中v-for循环渲染
2017/07/26 Javascript
聊聊那些使用前端Javascript实现的机器学习类库
2017/09/18 Javascript
Vue多种方法实现表头和首列固定的示例代码
2018/02/02 Javascript
Javascript 实现 Excel 导入生成图表功能
2018/10/22 Javascript
JavaScript闭包相关知识解析
2019/10/19 Javascript
js实现带搜索功能的下拉框
2020/01/11 Javascript
jQuery使用jsonp实现百度搜索的示例代码
2020/07/08 jQuery
[51:15]2014 DOTA2国际邀请赛中国区预选赛 Orenda VS LGD-GAMING
2014/05/22 DOTA
[00:48]食人魔魔法师至宝“金鹏之幸”全新模型和自定义特效展示
2019/12/19 DOTA
Python的Flask框架中集成CKeditor富文本编辑器的教程
2016/06/13 Python
python中Matplotlib实现绘制3D图的示例代码
2017/09/04 Python
python 删除非空文件夹的实例
2018/04/26 Python
python脚本实现音频m4a格式转成MP3格式的实例代码
2019/10/09 Python
Theo + George官方网站:都柏林时尚品牌
2019/04/08 全球购物
英国最大的汽车配件在线商店:Euro Car Parts
2019/09/30 全球购物
矫正人员思想汇报
2014/01/08 职场文书
四风存在的原因分析
2014/02/11 职场文书
《孔子游春》教学反思
2014/02/25 职场文书
教师教学评估方案
2014/05/09 职场文书
地方白酒代理协议书
2014/10/25 职场文书
行政前台岗位职责
2015/04/16 职场文书
mapstruct的用法之qualifiedByName示例详解
2022/04/06 Java/Android
Python中使用tkFileDialog实现文件选择、保存和路径选择
2022/05/20 Python