zoukankan      html  css  js  c++  java
  • PHP自动加载

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

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

    进一步优化升级,

    支持多个自动加载。

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

    很好,很强大!

  • 相关阅读:
    小波变换的引入,通俗易懂
    Leetcode 437. Path Sum III
    Leetcode 113. Path Sum II
    Leetcode 112 Path Sum
    Leetcode 520 Detect Capital
    Leetcode 443 String Compression
    Leetcode 38 Count and Say
    python中的生成器(generator)总结
    python的random模块及加权随机算法的python实现
    leetcode 24. Swap Nodes in Pairs(链表)
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/9135728.html
Copyright © 2011-2022 走看看