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之第二天
Oct 09 PHP
PHP中PDO的错误处理
Sep 04 PHP
php后台如何避免用户直接进入方法实例
Oct 15 PHP
php获取一个变量的名字的方法
Sep 05 PHP
php基于base64解码图片与加密图片还原实例
Nov 03 PHP
PHP的全局错误处理详解
Apr 25 PHP
PHP flush 函数使用注意事项
Aug 26 PHP
详解PHP处理字符串类似indexof的方法函数
Jun 11 PHP
php删除一个路径下的所有文件夹和文件的方法
Feb 07 PHP
php微信开发之关键词回复功能
Jun 13 PHP
thinkPHP框架整合tcpdf插件操作示例
Aug 07 PHP
PHP设计模式(五)适配器模式Adapter实例详解【结构型】
May 02 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
一个用于mysql的数据库抽象层函数库
2006/10/09 PHP
php+js实现异步图片上传实例分享
2014/06/02 PHP
网页的分页下标生成代码(PHP后端方法)
2016/02/03 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
javascript通过class来获取元素实现代码
2013/02/20 Javascript
jQuery提交多个表单的小技巧
2014/07/27 Javascript
jquery获取文档高度和窗口高度汇总
2016/01/25 Javascript
bootstrapvalidator之API学习教程
2017/06/29 Javascript
bootstrap3中container与container_fluid外层容器的区别讲解
2017/12/04 Javascript
vue 实现类似淘宝星级评分的示例
2018/03/01 Javascript
vue.js使用v-model指令实现的数据双向绑定功能示例
2018/05/22 Javascript
H5+C3+JS实现五子棋游戏(AI篇)
2020/05/28 Javascript
Angular6 Filter实现页面搜索的示例代码
2018/12/02 Javascript
layui实现把数据表格时间戳转换为时间格式的例子
2019/09/12 Javascript
Vue是怎么渲染template内的标签内容的
2020/06/05 Javascript
[07:59]2014DOTA2叨叨刀塔 林熊猫称被邀请赛现场盛况震撼
2014/07/21 DOTA
在Python程序中操作MySQL的基本方法
2015/07/29 Python
一步步教你用python的scrapy编写一个爬虫
2019/04/17 Python
django框架面向对象ORM模型继承用法实例分析
2019/07/29 Python
Python爬取智联招聘数据分析师岗位相关信息的方法
2019/08/13 Python
使用python库xlsxwriter库来输出各种xlsx文件的示例
2020/09/01 Python
python爬取音频下载的示例代码
2020/10/19 Python
简单介绍CSS3中Media Query的使用
2015/07/07 HTML / CSS
CSS3制作彩色进度条样式的代码示例分享
2016/06/23 HTML / CSS
CSS3 实现时间轴动画
2020/11/25 HTML / CSS
建筑班组长岗位职责
2014/01/02 职场文书
幼儿园春季开学寄语
2014/04/03 职场文书
计算机专业毕业生求职信
2014/04/30 职场文书
小学校本培训方案
2014/06/06 职场文书
经营理念标语
2014/06/21 职场文书
超市理货员岗位职责
2014/07/04 职场文书
工厂仓管员岗位职责范本
2014/07/17 职场文书
讲文明倡议书
2015/04/29 职场文书
25句企业管理语录:助你迅速打开思路,句句经典!
2020/01/14 职场文书
使用pandas模块实现数据的标准化操作
2021/05/14 Python
JavaScript设计模式之原型模式详情
2022/06/21 Javascript