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

  • 相关阅读:
    【Java】Swing-LookAndFeel 初解
    【软件】软件发布版本号说明
    【Gradle】Gradle compile 运用
    【Java】String,StringBuilder,StringBuffer 区别与实现
    Java面试题
    java面向对象_抽象类和接口
    Java学习_int和Integer的区别+包装类
    PHP-格式标签
    PHP+Zend 输出时中文乱码问题
    JSP学习
  • 原文地址:https://www.cnblogs.com/wanshutao/p/4671228.html
Copyright © 2011-2022 走看看