LifeType 中文開發論壇

開發 => 核心補強 => 主題作者是: robin 於 八月 01, 2007, 02:37:17 下午



主題: perform()方法是在哪调用的
作者: robin八月 01, 2007, 02:37:17 下午
------------------------------
<?php

   lt_include( PLOG_CLASS_PATH."class/summary/action/summaryaction.class.php" );
    lt_include( PLOG_CLASS_PATH."class/summary/view/summaryaskquestionview.class.php" );       

   /**
    * shows a list with all the users, pager included
    */
     class AskQuestionAction extends SummaryAction
     {
        function AskQuestionAction( $actionInfo, $request )
        {
            $this->SummaryAction( $actionInfo, $request );
        }
      
        /**
         * Loads the posts and shows them.
         */
        function perform()
        {
         $this->_view = new SummaryAskQuestionView( Array( "summary" => "AskQuestion",
                                                        "locale" => $this->_locale->getLocaleCode()));
         if( $this->_view->isCached()) {
            // nothing to do, the view is cached
            $this->setCommonData();
            return true;
         }
         
         $this->setCommonData();
         
         return true;
      }
     }   
?>
-----------------------------------
很想知道这个perform()方法是在哪调用的,它不是类的同名方法,也不是构造方法,但是会每次都执行,一直找不到它是在哪里调用的,只看到在ACTION类的定义过一个空方法。请指点一下,谢谢!


主題: Re: perform()方法是在哪调用的
作者: markwu八月 01, 2007, 03:28:40 下午
這是在 controller.php 中調用的。

在 MVC 的架構中, Controller (Front Controller) 是用來控制要執行哪一支 Acton (Action Controller) 的程式,所以 controller 他會去啟始這個 Action 的 object 外,他還會執行這個 Action 所以備呼叫後所需要執行的工作,這個就是 perform()。

你可以看看 controller.php,就會看到 perform() 的調用了。

Mark