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 相关文章推荐
解决phpmyadmin中文乱码问题。。。
Jan 18 PHP
php获取字段名示例分享
Mar 03 PHP
ThinkPHP采用实现三级循环代码实例
Jul 18 PHP
Yii实现MySQL多数据库和读写分离实例分析
Dec 03 PHP
微信access_token的获取开发示例
Apr 16 PHP
php实现Mysql简易操作类
Oct 11 PHP
PHP实现登陆并抓取微信列表中最新一组微信消息的方法
Jul 10 PHP
php微信开发之谷歌测距
Jun 14 PHP
PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
Sep 10 PHP
php实现映射操作实例详解
Oct 02 PHP
laravel通用化的CURD的实现
Dec 13 PHP
实例化php类时传参的方法分析
Jun 05 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
根德YB400的电路分析
2021/03/02 无线电
ThinkPHP实现跨模块调用操作方法概述
2014/06/20 PHP
基于jQuery的弹出消息插件 DivAlert之旅(一)
2010/04/01 Javascript
基于jQuery的合并表格中相同文本的相邻单元格的代码
2011/04/06 Javascript
js,jQuery 排序的实现代码,网页标签排序的实现,标签排序
2011/04/27 Javascript
简单时间提示DEMO从0开始一直进行计时
2013/11/19 Javascript
jQuery中find()方法用法实例
2015/01/07 Javascript
JS使用cookie实现DIV提示框只显示一次的方法
2015/11/05 Javascript
jquery+ajax实现直接提交表单实例分析
2016/06/17 Javascript
canvas学习之API整理笔记(一)
2016/12/29 Javascript
自定义vue全局组件use使用、vuex的使用详解
2017/06/14 Javascript
使用RN Animated做一个“添加购物车”动画的方法
2018/09/12 Javascript
js实现树形数据转成扁平数据的方法示例
2020/02/27 Javascript
Vue 实现创建全局组件,并且使用Vue.use() 载入方式
2020/08/11 Javascript
[13:21]DOTA2国际邀请赛采访专栏:RSnake战队国士无双,Fnatic.Fly
2013/08/06 DOTA
[18:16]sakonoko 2017年卡尔集锦
2018/02/06 DOTA
[00:20]DOTA2荣耀之路7:-ah fu-抢盾
2018/05/31 DOTA
easy_install python包安装管理工具介绍
2013/02/10 Python
Python解析命令行读取参数--argparse模块使用方法
2018/01/23 Python
python使用jieba实现中文分词去停用词方法示例
2018/03/11 Python
Python中的TCP socket写法示例
2018/05/11 Python
python使用循环打印所有三位数水仙花数的实例
2018/11/13 Python
PyCharm配置mongo插件的方法
2018/11/30 Python
在Django中URL正则表达式匹配的方法
2018/12/20 Python
numpy数组之存取文件的实现示例
2019/05/24 Python
在pytorch中为Module和Tensor指定GPU的例子
2019/08/19 Python
python3图片文件批量重命名处理
2019/10/31 Python
Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法实例分析
2019/12/26 Python
安装完Python包然后找不到模块的解决步骤
2020/02/13 Python
Django models filter筛选条件详解
2020/03/16 Python
Python如何读写CSV文件
2020/08/13 Python
医药代表个人的求职信分享
2013/12/08 职场文书
优秀员工获奖感言
2014/03/01 职场文书
火锅店的活动方案
2014/08/15 职场文书
2014年国庆节寄语
2014/09/19 职场文书
现实表现证明材料
2015/06/19 职场文书