• (转)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();//实现自动加载,很多框架就用这种方法自动加载类 
    ?> 

  • 相关阅读:
    Struts2拦截器的底层实现(AOP思想)
    JFreeChart的使用
    struts2与servlet的耦合
    谷歌地图:使用多边形自动形成类PolygonCreator
    struts2 中的 addActionError 、addFieldError、addActionMessage方法的区别
    Struts2的声明式异常处理
    Java synchronized 详解
    [转载]C# 编写SQL SERVER 2005 的存储过程
    调试基于clr管理的sqlserver存储过程
    sqlserver中调用.net中的dll
  • 原文地址:https://www.cnblogs.com/wanshutao/p/4671228.html
Copyright © 2020-2023  润新知