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 相关文章推荐
动易数据转成dedecms的php程序
Apr 07 PHP
PHP Google的translate API代码
Dec 10 PHP
一贴学会PHP 新手入门教程
Aug 03 PHP
Ajax PHP 边学边练 之三 数据库
Nov 26 PHP
使用JSON实现数据的跨域传输的php代码
Dec 20 PHP
php引用返回与取消引用的详解
Jun 08 PHP
解析php中var_dump,var_export,print_r三个函数的区别
Jun 21 PHP
浅析php中常量,变量的作用域和生存周期
Aug 10 PHP
PHP实现批量生成App各种尺寸Logo
Mar 19 PHP
php实现TCP端口检测的方法
Apr 01 PHP
Yii框架实现的验证码、登录及退出功能示例
May 20 PHP
Docker搭建自己的PHP开发环境
Feb 24 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实现通用alert函数的方法
2015/03/11 PHP
php常用正则函数实例小结
2016/12/29 PHP
跨浏览器的 mouseenter mouseleave 以及 compareDocumentPosition的使用说明
2010/05/04 Javascript
javascript Array.prototype.slice使用说明
2010/10/11 Javascript
jquery 获取表单元素里面的值示例代码
2013/07/28 Javascript
基于jquery实现的文字淡入淡出效果
2013/11/14 Javascript
js实现多选项切换导航菜单的方法
2015/02/06 Javascript
Javascript闭包实例详解
2015/11/29 Javascript
谈一谈jQuery核心架构设计
2016/03/28 Javascript
浅析ES6的八进制与二进制整数字面量
2016/08/30 Javascript
关于Vue.js一些问题和思考学习笔记(2)
2016/12/02 Javascript
Bootstrap table两种分页示例
2016/12/23 Javascript
JS实现的自动打字效果示例
2017/03/10 Javascript
JS实现的加减乘除四则运算计算器示例
2017/08/09 Javascript
AngularJS对动态增加的DOM实现ng-keyup事件示例
2018/03/12 Javascript
Webpack之tree-starking 解析
2018/09/11 Javascript
d3绘制基本的柱形图的实现代码
2018/12/12 Javascript
JS常见内存泄漏及解决方案解析
2020/05/30 Javascript
vue在图片上传的时候压缩图片
2020/11/18 Vue.js
pyqt和pyside开发图形化界面
2014/01/22 Python
python错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
2014/08/22 Python
python实现ping的方法
2015/07/06 Python
python删除服务器文件代码示例
2018/02/09 Python
Python结合ImageMagick实现多张图片合并为一个pdf文件的方法
2018/04/24 Python
数组保存为txt, npy, csv 文件, 数组遍历enumerate的方法
2018/07/09 Python
python生成带有表格的图片实例
2019/02/03 Python
Python数据结构与算法(几种排序)小结
2019/06/22 Python
Python 自动登录淘宝并保存登录信息的方法
2019/09/04 Python
pyhton中__pycache__文件夹的产生与作用详解
2019/11/24 Python
flask 框架操作MySQL数据库简单示例
2020/02/02 Python
浅谈css3新单位vw、vh、vmin、vmax的使用详解
2017/12/01 HTML / CSS
西班牙美妆电商:Perfume’s Club(有中文站)
2018/08/08 全球购物
玩具公司的创业计划书
2013/12/31 职场文书
建筑工地大门标语
2014/06/18 职场文书
2014年小学班主任工作总结
2014/11/08 职场文书
医生辞职信范文
2015/03/02 职场文书