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中使用CURL模拟登录并获取数据实例
Jul 01 PHP
又一个PHP实现的冒泡排序算法分享
Aug 21 PHP
Yii中render和renderPartial的区别
Sep 03 PHP
php使用str_replace实现输入框回车替换br的方法
Nov 24 PHP
php数组去除空值函数分享
Feb 02 PHP
分享一个Laravel好用的Cache宏
Mar 02 PHP
php实现QQ空间获取当前用户的用户名并生成图片
Jul 25 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
Apr 07 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
Jul 13 PHP
php之header的不同用法总结(实例讲解)
Nov 28 PHP
Laravel 6.2 中添加了可调用容器对象的方法
Oct 22 PHP
Laravel框架源码解析之反射的使用详解
May 14 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
一个从别的网站抓取信息的例子(域名查询)
2006/10/09 PHP
实现 win2003 下 mysql 数据库每天自动备份
2006/12/06 PHP
PHP 图片水印类代码
2012/08/27 PHP
基于CakePHP实现的简单博客系统实例
2015/06/28 PHP
twig模板常用语句实例小结
2016/02/04 PHP
php的扩展写法总结
2019/05/14 PHP
input 高级限制级用法
2009/03/26 Javascript
网站页面自动跳转实现方法PHP、JSP(下)
2010/08/01 Javascript
javascript 兼容所有浏览器的DOM扩展功能
2012/08/01 Javascript
js加载之使用DOM方法动态加载Javascript文件
2013/11/08 Javascript
javascript数组快速打乱重排的方法
2014/01/02 Javascript
jquery toolbar与网页浮动工具条具体实现代码
2014/01/12 Javascript
jquery中的常用事件bind、hover、toggle等示例介绍
2014/07/21 Javascript
docker中编译nodejs并使用nginx启动
2017/06/23 NodeJs
webpack构建vue项目的详细教程(配置篇)
2017/07/17 Javascript
JS实现获取汉字首字母拼音、全拼音及混拼音的方法
2017/11/14 Javascript
vue 页面加载进度条组件实例
2018/02/05 Javascript
vue、react等单页面项目部署到服务器的方法及vue和react的区别
2018/09/29 Javascript
vue mounted 调用两次的完美解决办法
2018/10/29 Javascript
vue动态合并单元格并添加小计合计功能示例
2020/11/26 Vue.js
[01:59]DOTA2首部纪录片《Free to play》预告片
2014/03/12 DOTA
如何优雅地处理Django中的favicon.ico图标详解
2018/07/05 Python
在PyCharm中三步完成PyPy解释器的配置的方法
2018/10/29 Python
pandas 缺失值与空值处理的实现方法
2019/10/12 Python
降低python版本的操作方法
2020/09/11 Python
Python实现加密的RAR文件解压的方法(密码已知)
2020/09/11 Python
深入探究HTML5的History API
2015/07/09 HTML / CSS
美国学校校服,儿童和婴儿服装:Cookie’s Kids
2016/10/14 全球购物
New Balance俄罗斯官方网上商店:购买运动鞋
2020/03/02 全球购物
Oracle里面常用的数据字典有哪些
2014/02/14 面试题
国旗下的讲话演讲稿
2014/05/08 职场文书
信电学院毕业生自荐书
2014/05/24 职场文书
大三学生英语考试作弊检讨书
2015/01/01 职场文书
毕业论文答辩演讲稿
2015/06/23 职场文书
2016中秋节问候语
2015/11/11 职场文书
python实现监听键盘
2021/04/26 Python