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 dirname(__FILE__) 获取当前文件的绝对路径
Jun 28 PHP
解析PHP中如何将数组变量写入文件
Jun 06 PHP
php递归函数中使用return的注意事项
Jan 17 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(二)
Jun 23 PHP
php网页病毒清除类
Dec 08 PHP
php简单图像创建入门实例
Jun 10 PHP
PHP简单判断iPhone、iPad、Android及PC设备的方法
Oct 11 PHP
Thinkphp开发--集成极光推送
Sep 15 PHP
PHP长网址与短网址的实现方法
Oct 13 PHP
PHP实现的简单组词算法示例
Apr 10 PHP
laravel请求参数校验方法
Oct 10 PHP
win10下 php安装seaslog扩展的详细步骤
Dec 04 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获取网卡的MAC地址支持WIN/LINUX系统
2014/04/30 PHP
跟我学Laravel之视图 &amp; Response
2014/10/15 PHP
PHP5多态性与动态绑定介绍
2015/04/03 PHP
php提交过来的数据生成为txt文件
2016/04/28 PHP
PHP正则表达式匹配替换与分割功能实例浅析
2017/02/04 PHP
JS拖动技术 关于setCapture使用
2010/12/09 Javascript
jQuery仿Excel表格编辑功能的实现代码
2013/05/01 Javascript
手机平板等移动端适配跳转URL的js代码
2014/01/25 Javascript
在jQuery中处理XML数据的大致方法
2015/08/14 Javascript
谈谈jQuery Ajax用法详解
2015/11/27 Javascript
jQuery实现布局高宽自适应的简单实例
2016/05/28 Javascript
JS在onclientclick里如何控制onclick的执行
2016/05/30 Javascript
js阻止冒泡和默认事件(默认行为)详解
2016/10/20 Javascript
three.js实现围绕某物体旋转
2017/01/25 Javascript
nodejs中全局变量的实例解析
2017/03/07 NodeJs
vue.js $refs和$emit 父子组件交互的方法
2017/12/20 Javascript
vue 更改连接后台的api示例
2019/11/11 Javascript
公众号SVG动画交互实战代码
2020/05/31 Javascript
Python代码的打包与发布详解
2014/07/30 Python
Python虚拟环境virtualenv的安装与使用详解
2017/05/28 Python
Python实现简单遗传算法(SGA)
2018/01/29 Python
pytorch cnn 识别手写的字实现自建图片数据
2018/05/20 Python
TensorFlow使用Graph的基本操作的实现
2020/04/22 Python
python:删除离群值操作(每一行为一类数据)
2020/06/08 Python
在tensorflow以及keras安装目录查询操作(windows下)
2020/06/19 Python
如何使用Django Admin管理后台导入CSV
2020/11/06 Python
毕业自荐书
2013/12/09 职场文书
网络技术专业求职信
2014/02/18 职场文书
中秋寄语大全
2014/04/11 职场文书
篮球社团活动总结
2014/06/27 职场文书
毕业证明模板
2015/06/19 职场文书
JavaScript控制台的更多功能
2021/04/28 Javascript
PyTorch梯度裁剪避免训练loss nan的操作
2021/05/24 Python
python not运算符的实例用法
2021/06/30 Python
html5+实现plus.io进行拍照和图片等获取
2022/06/01 HTML / CSS
spring 项目实现限流方法示例
2022/07/15 Java/Android