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 相关文章推荐
swfupload 多文件上传实现代码
Aug 27 PHP
使用eAccelerator加密PHP程序
Oct 03 PHP
PHP 设置MySQL连接字符集的方法
Jan 02 PHP
浅谈PHP调用Webservice思路及源码分享
Jun 04 PHP
解决CodeIgniter伪静态失效
Jun 09 PHP
ThinkPHP连接数据库及主从数据库的设置教程
Aug 22 PHP
一个经典实用的PHP图像处理类分享
Nov 18 PHP
ecshop 2.72如何修改后台访问地址
Mar 03 PHP
PHP经典面试题集锦
Mar 19 PHP
PHP实现带重试功能的curl连接示例
Jul 28 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
Nov 25 PHP
PHP实现的简单组词算法示例
Apr 10 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-fpm的配置详解
2013/06/03 PHP
php开发时容易忘记的一些技术细节
2016/02/03 PHP
各种常用浏览器getBoundingClientRect的解析
2009/05/21 Javascript
prototype 中文参数乱码解决方案
2009/11/09 Javascript
js 键盘记录实现(兼容FireFox和IE)
2010/02/07 Javascript
JavaScript输入邮箱自动提示实例代码
2014/01/13 Javascript
nodejs 实现模拟form表单上传文件
2014/07/14 NodeJs
使用jQuery简单实现模拟浏览器搜索功能
2014/12/21 Javascript
javascript实现点击提交按钮后显示loading的方法
2015/07/03 Javascript
javascript实现网页屏蔽Backspace事件,输入框不屏蔽
2015/07/21 Javascript
详解JavaScript编程中的数组结构
2015/10/24 Javascript
原生js实现图片轮播特效
2015/12/18 Javascript
Node.js重新刷新session过期时间的方法
2016/02/04 Javascript
网页前端登录js按Enter回车键实现登陆的两种方法
2016/05/10 Javascript
jquery实现拖动效果
2016/08/10 Javascript
JS瀑布流实现方法实例分析
2016/12/19 Javascript
详细介绍RxJS在Angular中的应用
2017/09/23 Javascript
微信小程序页面间值传递的两种方法
2018/11/26 Javascript
JavaScript实现Tab选项卡切换
2020/02/13 Javascript
VSCode Vue开发推荐插件和VSCode快捷键(小结)
2020/08/08 Javascript
详解详解Python中writelines()方法的使用
2015/05/25 Python
python删除指定类型(或非指定)的文件实例详解
2015/07/06 Python
python开发之thread实现布朗运动的方法
2015/11/11 Python
浅谈Python 中整型对象的存储问题
2016/05/16 Python
对python捕获ctrl+c手工中断程序的两种方法详解
2018/12/26 Python
Django如何将URL映射到视图
2019/07/29 Python
Python趣味入门教程之循环语句while
2020/08/26 Python
python实现AdaBoost算法的示例
2020/10/03 Python
从Pytorch模型pth文件中读取参数成numpy矩阵的操作
2021/03/04 Python
台湾母婴用品购物网站:Infant婴之房
2018/06/15 全球购物
总经理助理岗位职责
2013/11/08 职场文书
餐厅考勤管理制度
2014/01/28 职场文书
县长“四风”对照检查材料思想汇报
2014/10/05 职场文书
解决Swagger2返回map复杂结构不能解析的问题
2021/07/02 Java/Android
Python 的演示平台支持 WSGI 接口的应用
2022/04/20 Python
使用 Docker Compose 构建复杂的多容器App
2022/04/30 Servers