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写的小东西
Dec 06 PHP
PHP之变量、常量学习笔记
Mar 27 PHP
PHP 检查扩展库或函数是否可用的代码
Apr 06 PHP
php-perl哈希算法实现(times33哈希算法)
Dec 30 PHP
php实现文件下载简单示例(代码实现文件下载)
Mar 10 PHP
PHP使用get_headers函数判断远程文件是否存在的方法
Nov 28 PHP
php绘图之生成饼状图的方法
Jan 24 PHP
PHP实现阳历到农历转换的类实例
Mar 07 PHP
php while循环控制的简单实例
May 30 PHP
PHP进程通信基础之信号量与共享内存通信
Feb 19 PHP
简单实用的PHP文本缓存类实例
Mar 22 PHP
Laravel框架查询构造器 CURD操作示例
Sep 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 中的一些经验积累
2006/10/09 PHP
PHP按行读取、处理较大CSV文件的代码实例
2014/04/09 PHP
linux中cd命令使用详解
2015/01/08 PHP
PHP 开发者该知道的 5 个 Composer 小技巧
2016/02/03 PHP
解决Laravel无法使用COOKIE和SESSION的问题
2019/10/16 PHP
laravel 执行迁移回滚示例
2019/10/23 PHP
jQuery对象和Javascript对象之间转换的实例代码
2013/03/20 Javascript
解析Jquery的LigerUI如何实现文件上传
2013/07/09 Javascript
JS如何将数字类型转化为没3个一个逗号的金钱格式
2014/01/27 Javascript
JQuery自动触发事件的方法
2015/06/13 Javascript
通过设置CSS中的position属性来固定层的位置
2015/12/14 Javascript
node.js+express制作网页计算器
2016/01/17 Javascript
如何判断Javascript对象是否存在的简单实例
2016/05/18 Javascript
angularJS深拷贝详解
2017/03/23 Javascript
JavaScript30 一个月纯 JS 挑战中文指南(英文全集)
2017/07/23 Javascript
Vue2.0学习之详解Vue 组件及父子组件通信
2017/12/12 Javascript
CSS3 动画卡顿性能优化的完美解决方案
2018/09/20 Javascript
简洁的十分钟Python入门教程
2015/04/03 Python
python 队列详解及实例代码
2016/10/18 Python
利用Python-iGraph如何绘制贴吧/微博的好友关系图详解
2017/11/02 Python
详解Django+uwsgi+Nginx上线最佳实战
2019/03/14 Python
Python操作rabbitMQ的示例代码
2019/03/19 Python
python如何实现word批量转HTML
2020/09/30 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
2020/12/14 Python
Python新建项目自动添加介绍和utf-8编码的方法
2020/12/26 Python
Android interview questions
2016/12/25 面试题
关于期中考试的反思
2014/02/02 职场文书
高中军训感想800字
2014/02/23 职场文书
艺术设计专业求职自荐信
2014/05/19 职场文书
普通话宣传标语
2014/06/26 职场文书
新教师个人工作总结
2015/02/06 职场文书
2015年小学美术工作总结
2015/05/25 职场文书
总结Python常用的魔法方法
2021/05/25 Python
MySQL 8.0 Online DDL快速加列的相关总结
2021/06/02 MySQL
关于SpringBoot 使用 Redis 分布式锁解决并发问题
2021/11/17 Redis
Java实现字符串转为驼峰格式的方法详解
2022/07/07 Java/Android