• PHP函数spl_autoload_register()用法和__autoload()介绍(转)


    详细出处参考:http://www.jb51.net/article/29624.htm

    又是框架冲突导致__autoload()失效,用spl_autoload_register()重构一下,问题解决

    __autoload()的用法就不再说了,以前已经在我的WEB开发笔记中说过。PHP __autoload函数(自动载入类文件)的使用方法, 原文地址:http://www.jb51.net/article/29625.htm 。
    说一说,spl_autoload_register()的用法吧,很简单,可以这样理解,就是声明一个自定义__autoload(),你可以是A函数,也可以是B函数,想怎么样就怎么样,函数体的写法,当然要和__autoload()一样就OK 了。
    当PHP找不到类文件会调用这个方法,当注册了自己的函数或方法时,PHP不会调用__autoload()函数,而会调用自定义的函数
    spl_autoload_register(‘func_name');
    spl_autoload_register(array(‘class_name','method_name'));
    详细说明如下:
    spl_autoload_register
    (PHP 5>= 5.1.2)
    spl_autoload_register — 注册__autoload()函数
    说明
    bool spl_autoload_register ([ callback $autoload_function ] )
    将函数注册到SPL __autoload函数栈中。如果该栈中的函数尚未激活,则激活它们。
    如果在你的程序中已经实现了__autoload函数,它必须显式注册到__autoload栈中。因为
    spl_autoload_register()函数会将Zend Engine中的__autoload函数取代为spl_autoload()或
    spl_autoload_call()。
    参数
    autoload_function
    欲注册的自动装载函数。如果没有提供任何参数,则自动注册autoload的默认实现函数
    spl_autoload()。
    返回值
    如果成功则返回 TRUE,失败则返回 FALSE。
    注:SPL 是Standard PHP Library(标准PHP库)的缩写。它是PHP5引入的一个扩展库,其主要功能包括autoload机制的实现及包括各种Iterator接口或类。 SPL autoload机制的实现是通过将函数指针autoload_func指向自己实现的具有自动装载功能的函数来实现的。SPL有两个不同的函数 spl_autoload, spl_autoload_call,通过将autoload_func指向这两个不同的函数地址来实现不同的自动加载机制。
    代码如下:
    test.class.php

    <?php
    class abc{
    function __construct()
    {
    echo 'www.chhua.com;
    }
    }
    ?> 

    load.php

    <?php
    class LOAD
    {
    static function loadClass($class_name)
    {
    $filename = $class_name.".class.php";
    if (is_file($filename)) return include_once $filename;
    }
    }
    /**
    * 设置对象的自动载入
    * spl_autoload_register — Register given function as __autoload() implementation
    */
    spl_autoload_register(array('LOAD', 'loadClass'));
    $a = new Test();//实现自动加载,很多框架就用这种方法自动加载类
    ?> 
  • 相关阅读:
    进击的实时数仓:Flink 在 OPPO 实时计算平台的研发与应用实践
    vue中将时间戳转换为YYYY-MM-dd hh:mm格式时间的组件
    vue 将时间戳转换成日期格式 (一)
    element-ui DatePicker 日期选择器 让结束日期大于开始日期
    css 边框上如何写入文字?
    2019最新Web前端经典面试试题(含答案)
    Nginx 安装及配置
    前端基础面试题(JS部分)
    const与指针
    linux配置-------redhat虚拟机的中文输入法配置
  • 原文地址:https://www.cnblogs.com/xingmeng/p/3583258.html
Copyright © 2020-2023  润新知