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

  • 相关阅读:
    三次请求(读-改-读)引出nibernate 一级缓存
    算法竞赛入门经典第一、二章摘记
    uva 10905 Children's Game
    uva 11205 The broken pedometer
    uva 10160 Servicing stations
    uva 208 Firetruck
    uva 167 The Sultan's Successors
    zoj 1016 Parencodings
    uva 307 Sticks
    uva 216 Getting in Line
  • 原文地址:https://www.cnblogs.com/wanshutao/p/4671228.html
Copyright © 2011-2022 走看看