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


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

    本文实例讲述了PHP类的自动加载机制实现方法。分享给大家供大家参考,具体如下:

    Test1.class.php

    <?php
    class Test1
    {
      public static function test() {
        echo "hello,world!
    ";
      }
    }

    Test2.class.php

    <?php
    class Test2
    {
      public static function test() {
        echo "你好,世界!
    ";
      }
    }

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

    很好,很强大!

  • 相关阅读:
    2018/12/05 PAT刷题 L1-014 简单题 Java
    2018/12/05 PAT刷题 L1-013 计算阶乘和 Java
    2018/12/04 PAT刷题 L1-012 计算指数 java
    L1-011 A-B Java 部分解
    2018/12/04 PAT再思考 L1-010 比较大小
    2018/12/04 PAT刷题 L1-009 N个数求和 java
    2018/12/04 PAT刷题 L1-008 求整数段和 java
    2018/12/04 PAT刷题 L1-007 念数字 java
    建造者模式
    外观模式
  • 原文地址:https://www.cnblogs.com/usays/p/10255668.html
Copyright © 2020-2023  润新知