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 20 PHP
php守护进程 加linux命令nohup实现任务每秒执行一次
Jul 04 PHP
关于PHP的相似度计算函数:levenshtein的使用介绍
Apr 15 PHP
yii2.0之GridView自定义按钮和链接用法
Dec 15 PHP
php判断两个浮点数是否相等的方法
Mar 14 PHP
深入讲解PHP的Yii框架中的属性(Property)
Mar 18 PHP
Zend Framework+smarty用法实例详解
Mar 19 PHP
ThinkPHP 模板substr的截取字符串函数详解
Jan 09 PHP
php curl上传、下载、https登陆实现代码
Jul 23 PHP
利用Homestead快速运行一个Laravel项目的方法详解
Nov 14 PHP
php和asp语法上的区别总结
May 12 PHP
浅析PHP中的 inet_pton 网络函数
Dec 16 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
PL-880隐藏功能
2021/03/01 无线电
基于session_unset与session_destroy的区别详解
2013/06/03 PHP
Java和PHP在Web开发方面对比分析
2015/03/01 PHP
Laravel 5框架学习之路由、控制器和视图简介
2015/04/07 PHP
PHP中功能强大却很少使用的函数实例小结
2016/11/10 PHP
PDO::beginTransaction讲解
2019/01/27 PHP
WordPress伪静态规则设置代码实例
2020/12/10 PHP
基于jQuery的计算文本框字数的代码
2012/06/06 Javascript
js中的屏蔽的使用示例
2013/07/30 Javascript
JavaScript实现多维数组的方法
2013/11/20 Javascript
javascript中clipboardData对象用法详解
2015/05/13 Javascript
学习JavaScript设计模式之策略模式
2016/01/12 Javascript
bootstrapfileinput实现文件自动上传
2016/11/08 Javascript
vue.js实现带日期星期的数字时钟功能示例
2018/08/28 Javascript
vue主动刷新页面及列表数据删除后的刷新实例
2018/09/16 Javascript
使用post方法实现json往返传输数据的方法
2019/03/30 Javascript
vue 中 命名视图的用法实例详解
2019/08/14 Javascript
JavaScript实现随机点名程序
2020/03/25 Javascript
状态机的概念和在Python下使用状态机的教程
2015/04/11 Python
Python彩色化Linux的命令行终端界面的代码实例分享
2016/07/02 Python
简单谈谈Python中的几种常见的数据类型
2017/02/10 Python
python 实现读取一个excel多个sheet表并合并的方法
2019/02/12 Python
python顺序执行多个py文件的方法
2019/06/29 Python
详解pycharm连接不上mysql数据库的解决办法
2020/01/10 Python
Python 实现RSA加解密文本文件
2020/12/30 Python
html特殊符号示例 html特殊字符编码对照表
2014/01/14 HTML / CSS
canvas实现图片镜像翻转的2种方式
2020/07/22 HTML / CSS
大学生职业生涯规划书模版
2013/12/30 职场文书
网络教育自我鉴定
2014/02/04 职场文书
高一数学教学反思
2014/02/07 职场文书
实习证明格式范文
2014/10/14 职场文书
作风建设年活动实施方案
2014/10/24 职场文书
护士2014年终工作总结
2014/11/11 职场文书
写给老婆的保证书
2015/02/27 职场文书
计划生育工作总结2015
2015/04/03 职场文书
Pytorch中使用ImageFolder读取数据集时忽略特定文件
2022/03/23 Python