zoukankan      html  css  js  c++  java
  • 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__是当前目录的绝对路径
    }

    很好,很强大!

  • 相关阅读:
    javascript:history.go()和History.back()的区别
    Web 开发] 定制IE下载对话框的按钮(打开/保存)(转)
    JavaScript 浮动定位提示效果(转)
    关于网页*静态化*及SEO问题的一些补充(转)
    httpanalyzer 结合 HttpWebRequest Post的运用
    SEO工具大全(转)
    导出excel
    Asp.NET导出Excel文件乱码解决若干方法 (转)
    关于DataBinder.Eval Eval Bind
    电脑疑似中毒
  • 原文地址:https://www.cnblogs.com/usays/p/10255668.html
Copyright © 2011-2022 走看看