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

    很好,很强大!

  • 相关阅读:
    mysql批量插入数据的基类
    mount命令解析
    常用linux命令记录
    转载一篇大神的博客文章
    linux查看网卡状态
    centos7配置网卡绑定
    coentos7安装python3
    阿里云ecs 硬盘在线扩容
    centos7安装redis5
    centos7 rpm安装nginx
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/9135728.html
Copyright © 2011-2022 走看看