zoukankan      html  css  js  c++  java
  • php的spl_autoload标准库方法

    在php5中的标准库方法spl_autoload相当于实现自己的__autoload

    <?php
        function __autoload($classname){
            if(is_file($classname.'.php'){
                include $classname.'.php';
            } elseif(is_file($classname.'.inc'){
                include $classname.'.inc';
            }
        }

    它会在注册目录下自动寻找与$classname同名的.php/.inc文件。当然,你也可以指定特定类型的文件,方法是注册扩展名

    <?php
        spl_autoload_extensions('.php,.inc,.some');

    这样,它也会搜索.some文件。默认,php是不会启动spl_autoload的,那么怎样才能自动让spl_autoload生效呢呢?方法是

    <?php
        spl_autoload_register();

    spl_autoload_register有一个$callback参数,如果不指定,它就会自动注册spl_autoload,为了能搜寻更多的自动加载目录,可以在这些代码前面设置自动加载目录

    <?php
        set_include_path(get_include_path() . PATH_SEPARATOR . 'some/path' . DIRECTORY_SEPARATOR);

    这样,当php找不到指定的类时,就会在set_include_path指定的目录下寻找。

    这些方法常用在php框架中。比如把上面的介绍串连起来:

    <?php
    set_include_path(get_include_path() . PATH_SEPARATOR . 'some/path' . DIRECTORY_SEPARATOR);
    spl_autoload_extensions('.php,.inc,.some');
    spl_autoload_register();

    当你要加载some/path下面的classA类时,它会在目录下寻找classa.php或classa.inc或classa.some,这样你就可以放心地运用new classA或extends classA

    <?php
        ClassB extends ClassA {
            // code..
        }
    
        $a = new ClassA;
        $b = new ClassB;
  • 相关阅读:
    harbor install & docker-compose
    ngx安装 (转)
    docker对镜像自动重启的设置
    docker安装脚本
    sql中的递归拼接
    【HC89S003F4开发板】 4端口消抖
    【HC89S003F4开发板】 6crc校验
    【HC89S003F4开发板】 3串口调试
    【HC89S003F4开发板】 1环境搭建
    用mkdocs在gitee码云上建立一个简单的文档博客
  • 原文地址:https://www.cnblogs.com/sumsung753/p/3834947.html
Copyright © 2011-2022 走看看