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 读取文件的正确方法
Apr 29 PHP
用php获取本周,上周,本月,上月,本季度日期的代码
Aug 05 PHP
php自定义函数call_user_func和call_user_func_array详解
Jul 14 PHP
PHP中使用cURL实现Get和Post请求的方法
Mar 13 PHP
PHP计算2点经纬度之间的距离代码
Aug 12 PHP
探寻PHP脚本不报错的原因
Jun 12 PHP
PHP调用C#开发的dll类库方法
Jul 28 PHP
浅谈php冒泡排序
Dec 30 PHP
Nginx下配置codeigniter框架方法
Apr 07 PHP
php常用表单验证类用法实例
Jun 18 PHP
Yii2 assets清除缓存的方法
May 16 PHP
PHP 7.1中AES加解密方法mcrypt_module_open()的替换方案
Oct 17 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
整合了前面的PHP数据库连接类~~做成一个分页类!
2006/11/25 PHP
基于PHP的简单采集数据入库程序【续篇】
2014/07/30 PHP
php实现过滤字符串中的中文和数字实例
2015/07/29 PHP
php in_array() 检查数组中是否存在某个值详解
2016/11/23 PHP
用Javascript做flash做的事..才完成的一个类.Auntion Action var 0.1
2007/02/23 Javascript
JavaScript 字符串连接性能优化
2008/12/20 Javascript
加速IE的Javascript document输出的方法
2010/12/02 Javascript
读jQuery之一(对象的组成)
2011/06/11 Javascript
JavaScript中日期函数的相关操作知识
2016/08/03 Javascript
jQuery中Chosen三级联动功能实例代码
2017/03/07 Javascript
js脚本编写简单刷票投票系统
2017/06/27 Javascript
BootStrap Validator 根据条件在JS中添加或移除校验操作
2017/10/12 Javascript
vue服务端渲染缓存应用详解
2018/09/12 Javascript
微信小程序实现随机验证码功能
2018/12/20 Javascript
浅谈JS中几种轻松处理'this'指向方式
2019/09/16 Javascript
vue实现评价星星功能
2020/06/30 Javascript
python正则表达式中的括号匹配问题
2014/12/14 Python
python模块之sys模块和序列化模块(实例讲解)
2017/09/13 Python
解决python3 json数据包含中文的读写问题
2018/05/10 Python
python3.5绘制随机漫步图
2018/08/27 Python
在Pycharm中对代码进行注释和缩进的方法详解
2019/01/20 Python
python 列表中[ ]中冒号‘:’的作用
2019/04/30 Python
Python实现非正太分布的异常值检测方式
2019/12/09 Python
python之pymysql模块简单应用示例代码
2019/12/16 Python
selenium中get_cookies()和add_cookie()的用法详解
2020/01/06 Python
解决python多线程报错:AttributeError: Can't pickle local object问题
2020/04/08 Python
Python常用GUI框架原理解析汇总
2020/12/07 Python
HTML5添加鼠标悬浮音响效果不使用FLASH
2014/04/23 HTML / CSS
哈萨克斯坦最大的时装、鞋子和配饰在线商店:Lamoda.kz
2019/11/19 全球购物
服装厂厂长职责
2013/12/16 职场文书
纪念建党演讲稿范文
2014/01/13 职场文书
创建卫生先进单位实施方案
2014/03/10 职场文书
四风问题对照检查材料整改措施
2014/09/27 职场文书
放假通知范文
2015/04/14 职场文书
2016初一新生军训心得体会
2016/01/11 职场文书
Flask response响应的具体使用
2021/07/15 Python