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 和 MySQL 时区的一点总结
Mar 26 PHP
DISCUZ 论坛管理员密码忘记的解决方法
May 14 PHP
php利用header函数实现文件下载时直接提示保存
Nov 12 PHP
phplock(php进程锁) v1.0 beta1
Nov 24 PHP
Windows下部署Apache+PHP+MySQL运行环境实战
Aug 31 PHP
php使用glob函数快速查询指定目录文件的方法
Nov 15 PHP
php开发中的页面跳转方法总结
Apr 26 PHP
HTML中嵌入PHP的简单方法
Feb 16 PHP
php 数组随机取值的简单实例
May 23 PHP
PHP实现生成模糊图片的方法示例
Dec 21 PHP
php和redis实现秒杀活动的流程
Jul 17 PHP
PHP生成随机密码4种方法及性能对比
Dec 11 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 命名空间实例说明
2011/01/27 PHP
PHP获取服务器端信息的方法
2014/11/28 PHP
jQuery ajax+PHP实现的级联下拉列表框功能示例
2019/02/12 PHP
javascript 函数调用规则
2009/08/26 Javascript
基于JQuery的浮动DIV显示提示信息并自动隐藏
2011/02/11 Javascript
Jquery实现搜索框提示功能示例代码
2013/08/13 Javascript
Ext4.2的Ext.grid.plugin.RowExpander无法触发事件解决办法
2014/08/15 Javascript
JS模拟实现Select效果代码
2015/09/24 Javascript
基于javascript代码实现通过点击图片显示原图片
2015/11/29 Javascript
jQuery Ajax 实例代码 ($.ajax、$.post、$.get)
2016/04/29 Javascript
使用jQuery Rotare实现微信大转盘抽奖功能
2016/06/20 Javascript
同步异步动态引入js文件的几种方法总结
2016/09/23 Javascript
JS返回只包含数字类型的数组实例分析
2016/12/16 Javascript
javascript prototype原型详解(比较基础)
2016/12/26 Javascript
浅谈js-FCC算法Friendly Date Ranges(详解)
2017/04/10 Javascript
node.js中fs.stat与fs.fstat的区别详解
2017/06/01 Javascript
jQuery中常用动画效果函数知识点整理
2018/08/19 jQuery
@angular前端项目代码优化之构建Api Tree的方法
2018/12/24 Javascript
jquery实现进度条状态展示
2020/03/26 jQuery
Python中的异常处理简明介绍
2015/04/13 Python
python中numpy基础学习及进行数组和矢量计算
2017/02/12 Python
Python中的上下文管理器和with语句的使用
2018/04/17 Python
浅谈tensorflow1.0 池化层(pooling)和全连接层(dense)
2018/04/27 Python
用uWSGI和Nginx部署Flask项目的方法示例
2019/05/05 Python
一文秒懂python读写csv xml json文件各种骚操作
2019/07/04 Python
python实现音乐播放器 python实现花框音乐盒子
2020/02/25 Python
新秀丽拉杆箱美国官方网站:Samsonite美国
2016/07/25 全球购物
以实惠的价格轻松租车,免费取消:Easyrentcars
2019/07/16 全球购物
地球一小时宣传标语
2014/06/24 职场文书
淘宝活动总结范文
2014/06/26 职场文书
学习张丽丽心得体会
2014/09/03 职场文书
单位法人授权委托书范本
2014/10/09 职场文书
初中英语教师个人工作总结
2015/02/09 职场文书
2015年为民办实事工作总结
2015/05/26 职场文书
深度学习小工程练习之垃圾分类详解
2021/04/14 Python
Java反应式框架Reactor中的Mono和Flux
2021/07/25 Java/Android