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 相关文章推荐
我的论坛源代码(六)
Oct 09 PHP
php 图像函数大举例(非原创)
Jun 20 PHP
php google或baidu分页代码
Nov 26 PHP
Linux fgetcsv取得的数组元素为空字符串的解决方法
Nov 25 PHP
色色整理的PHP面试题集锦
Mar 08 PHP
多个PHP中文字符串截取函数
Nov 12 PHP
PHP、Python和Javascript的装饰器模式对比
Feb 03 PHP
php生成数字字母的验证码图片
Jul 14 PHP
详解PHP数据压缩、加解密(pack, unpack)
Dec 17 PHP
Smarty模板配置实例简析
Jul 20 PHP
PHP实现微信提现功能(微信商城)
Nov 21 PHP
基于PHP+Mysql简单实现了图书购物车系统的实例详解
Aug 06 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
Ping服务的php实现方法,让网站快速被收录
2012/02/04 PHP
PHP实现即时输出、实时输出内容方法
2015/05/27 PHP
JavaScript的类型简单说明
2010/09/03 Javascript
跨浏览器通用、可重用的选项卡tab切换js代码
2011/09/20 Javascript
jQuery给多个不同元素添加class样式的方法
2015/03/26 Javascript
JQuery实现的按钮倒计时效果
2015/12/23 Javascript
jQuery unbind 删除绑定事件详解
2016/05/24 Javascript
AngularJs  Understanding Angular Templates
2016/09/02 Javascript
JS填写银行卡号每隔4位数字加一个空格
2016/12/19 Javascript
jQuery实现键盘回车搜索功能
2017/07/25 jQuery
微信小程序promsie.all和promise顺序执行
2017/10/27 Javascript
帝国cms首页列表页实现点赞功能
2017/10/30 Javascript
vue.js中toast用法及使用toast弹框的实例代码
2018/08/27 Javascript
angularjs性能优化的方法
2018/09/05 Javascript
浅析vue插槽和作用域插槽的理解
2019/04/22 Javascript
小程序:授权、登录、session_key、unionId的详解
2019/05/15 Javascript
[04:13]2018国际邀请赛典藏宝瓶Ⅱ饰品一览
2018/07/21 DOTA
[45:34]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.18
2020/12/19 DOTA
Python中关键字nonlocal和global的声明与解析
2017/03/12 Python
由浅入深讲解python中的yield与generator
2017/04/05 Python
Python实现获取磁盘剩余空间的2种方法
2017/06/07 Python
Python OpenCV处理图像之滤镜和图像运算
2018/07/10 Python
实例讲解Python中整数的最大值输出
2019/03/17 Python
python 画条形图(柱状图)实例
2020/04/24 Python
浅析Python打包时包含静态文件处理方法
2021/01/15 Python
Python中lru_cache的使用和实现详解
2021/01/25 Python
利用CSS3 动画 绘画 圆形动态时钟
2018/03/20 HTML / CSS
基于Html5实现的语音搜索功能
2019/05/13 HTML / CSS
英国最大的独立玩具专卖店:The Entertainer
2019/09/06 全球购物
laravel使用redis队列实例讲解
2021/03/23 PHP
电子商务专业在校生实习自我鉴定
2013/09/29 职场文书
新年寄语大全
2014/04/12 职场文书
医院节能减排方案
2014/06/13 职场文书
身边的榜样活动方案
2014/08/20 职场文书
幼儿园感恩节活动方案
2014/10/06 职场文书