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模拟HTTP认证
Oct 09 PHP
PHP操作数组相关函数
Feb 03 PHP
ajax 的post方法实例(带循环)
Jul 04 PHP
php中大括号作用介绍
Mar 22 PHP
php实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例
Jul 18 PHP
thinkphp使用literal防止模板标签被解析的方法
Nov 22 PHP
php实现refresh刷新页面批量导入数据的方法
Dec 23 PHP
thinkPHP下的widget扩展用法实例分析
Dec 26 PHP
php json中文编码为null的解决办法
Dec 14 PHP
Yii2设置默认控制器的两种方法
May 19 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
Jun 05 PHP
php微信小程序解包过程实例详解
Mar 31 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 从数据库提取二进制图片的处理代码
2009/09/09 PHP
如何用phpmyadmin设置mysql数据库用户的权限
2012/01/09 PHP
鸡肋的PHP单例模式应用详解
2013/06/03 PHP
迅速确定php多维数组的深度的方法
2014/01/07 PHP
查找php配置文件php.ini所在路径的二种方法
2014/05/26 PHP
php求数组全排列,元素所有组合的方法
2016/05/05 PHP
PHP实现登陆表单提交CSRF及验证码
2017/01/24 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
ThinkPHP5&amp;5.1实现验证码的生成、使用及点击刷新功能示例
2020/02/07 PHP
javascript 实现map集合
2015/04/03 Javascript
基于insertBefore制作简单的循环插空效果
2015/09/21 Javascript
JavaScript的Number对象的toString()方法
2015/12/18 Javascript
jQuery调用Webservice传递json数组的方法
2016/08/06 Javascript
JS中script标签defer和async属性的区别详解
2016/08/12 Javascript
jQuery.Validate表单验证插件的使用示例详解
2017/01/04 Javascript
AngularJS中使用ngModal模态框实例
2017/05/27 Javascript
使用Angular CLI快速创建Angular项目的一些基本概念和写法小结
2018/04/22 Javascript
Node.js + express实现上传大文件的方法分析【图片、文本文件】
2019/03/14 Javascript
详解Vue.js 作用域、slot用法(单个slot、具名slot)
2019/10/15 Javascript
Python数据结构与算法之图的基本实现及迭代器实例详解
2017/12/12 Python
python的格式化输出(format,%)实例详解
2018/06/01 Python
解决tensorflow测试模型时NotFoundError错误的问题
2018/07/27 Python
解决Django加载静态资源失败的问题
2019/07/28 Python
Python paramiko模块使用解析(实现ssh)
2019/08/30 Python
用python写测试数据文件过程解析
2019/09/25 Python
Python发送邮件的实例代码讲解
2019/10/16 Python
Python字典的概念及常见应用实例详解
2019/10/30 Python
tornado+celery的简单使用详解
2019/12/21 Python
Python编程快速上手——Excel表格创建乘法表案例分析
2020/02/28 Python
网页切图的CSS和布局经验与要点
2015/04/09 HTML / CSS
HTML5语音识别标签写法附图
2013/11/18 HTML / CSS
大门门卫岗位职责
2013/11/30 职场文书
英语自荐信范文
2013/12/11 职场文书
单位委托书怎么写
2014/08/02 职场文书
悬崖上的金鱼姬观后感
2015/06/15 职场文书
《地。-关于地球的运动-》单行本第七集上市,小说家朝井辽献上期待又害怕的推荐文
2022/03/31 日漫