PHP类的自动加载机制实现方法分析

news/2024/7/7 16:26:17

这篇文章主要介绍了PHP类的自动加载机制实现方法,结合实例形式分析了__autoload方法进行类自动加载操作的相关实现技巧与使用注意事项,需要的朋友可以参考下。

本文实例讲述了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__是当前目录的绝对路径
}

当程序发现没有引入类时,会自动调用这个方法,引入类文件。

 当你引用不存在的类时,__autoload就会被调用,并且你的类名会被作为参数传送过去(当你同时使用命名空间,包含命名空间部分会一起作为参数传送)。

进一步优化升级,

支持多个自动加载。

<?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__是当前目录的绝对路径
}

很好,很强大!

转载于:https://www.cnblogs.com/usays/p/10255668.html


http://www.niftyadmin.cn/n/2707837.html

相关文章

AWK函数

函数 内置字符串函数表 函数 概述 gsub&#xff08;r&#xff0c;s&#xff09; 用s替换r&#xff08;文本整页&#xff09; gsub&#xff08;r&#xff0c;s&#xff0c;f&#xff09; 在f中用s替换r&#xff08;文本整页&#xff09; sub&#xff08;r&#xff0c;s&…

oracle里面查找重复项,Oracle数据库查询重复数据及删除重复数据方法

工作中&#xff0c;发现Oracle数据库表中有许多重复的数据&#xff0c;而这个时候老板需要统计表中有多少条数据时(不包含重复数据)&#xff0c;只想说一句MMP&#xff0c;库中好几十万数据&#xff0c;肿么办&#xff0c;无奈只能自己在网上找语句&#xff0c;最终成功解救&am…

P5028 Annihilate

P5028 Annihilate 50个串&#xff0c;任意两两的最长公共子串 回忆最长公共子串求法 1.hash二分 2.SAM 3.SA&#xff0c;属于不同的串的hei的max 1.hash二分 暴力两两枚举再跑的话直接TLE 2.SAM 卡空间64MB跑不过去 3.SA 其实就是两个最长公共子串的扩展 每个i位置&#xff0c;…

oracle sga aix重启,在AIX 5.3+Oracle 10.2.0.4 平台上将SGA PIN在内存中,并使用大页内存...

首先检查AIX版本&#xff0c;修改一些系统参数&#xff1a;[xfxyxh][/]#oslevel -s5300-09-01-0847符合操作系统5.3 ML01以上的要求。接着修改系统参数&#xff1a;[xfxyxh][/]#vmo -p -o v_pinshm1[xfxyxh][/]#vmo -p -o minperm%5[xfxyxh][/]#vmo -p -o maxperm%90[xfxyxh][/…

2017-2018-1 20155319 《信息安全系统设计基础》第九周学习总结

2017-2018-1 20155319 《信息安全系统设计基础》第九周学习总结 教材学习内容总结 1.存储技术 三种常见存储技术&#xff1a;RAM/ROM/磁盘 &#xff08;1&#xff09;随机访问存储器RAM 两类&#xff1a;静态RAM&#xff08;SRAM&#xff09;和动态RAM&#xff08;DRAM&#xf…

卷积神经网络的结构总结

转自&#xff1a; CNN网络架构演进&#xff1a;从LeNet到DenseNet https://www.cnblogs.com/skyfsm/p/8451834.html 基于深度学习的目标检测技术演进&#xff1a;R-CNN、Fast R-CNN、Faster R-CNN https://www.cnblogs.com/skyfsm/p/6806246.html 转载于:https://www.cnblogs.c…

iview form 表单的怪异小BUG

当同一个弹窗中的表单重复利用时&#xff1a; 我原先的代码逻辑是&#xff1a; 1 <Form :label-width"100" class"mt20" ref"changeParam" :rules"ruleValidate" :model"changeParam">2 <Row>3 …

What Is Target Blank Anchor Tag Phishing Attack? How To Prevent It?

Instagram fixed a big issue which is taken for granted by most of the frontend developers around the world. It’s the issue of putting a link with target”_blank” attribute in an anchor tag to make it open in a new tab. There is a problem in how the brows…