文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>类的自动载入

类的自动载入

时间:2010-05-02  来源:octans

参考:Autoloading Classes http://cn2.php.net/manual/en/language.oop5.autoload.php
可以定义函数__autoload(className) 当PHP5要读取或者实例化一个类的时候,如果发现这个类还未被定义,那么就会尝试调用函数 __autoload(className), 这样可以在定义的函数__autoload(className)中根据类的名在来加载这个类。 这样做的优点是可以按需加载类
实例代码如下, step1: 文件myTest.php中实例化类IndexAction step2: PHP5在文件myTest.php中没有找到类IndexAction的定义, 这时PHP5调用函数__autoload,注意这次调用__autoload的原因是要实例化一个类 step3:此函数将类IndexAction的定义文件IndexAction.class.php载入 step4:当载入IndexAction的定义时,它是继承自BaseAction的,PHP5没有找到类BaseAction的定义,于是又调用函数__autoload,注意这次调用函数__autoload的原因是需要读取BaseAction

<?php
/*
 * File: myTest.php
 */

function __autoload($className)
{
    require_once $className . '.class.php';
}

/*
 * Instance class IndexAction
 */
$indexAction = new IndexAction();
?>




<?php
/*
 * File: IndexAction.class.php
 */

class IndexAction extends BaseAction {
    /*
    function __construct(){
        parent::__construct();
        echo __METHOD__;
    }
    */
    
    /*
    function IndexAction() {
     echo __METHOD__;
    }
    */
    
    function _initialize() {
        echo __METHOD__;
    }

    function __destruct(){
        echo __METHOD__;
    }
}
?>



<?php
/*
 * File: BaseAction.class.php
 */

class BaseAction {
    function __construct(){
        echo __METHOD__;
        
        if(method_exists($this,'_initialize')){
            $this->_initialize();
        }
    }

    function __destruct(){
        echo __METHOD__;
    }
}
?>


相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载