2015-01-03 53 views
0

我有一個類一樣,在類中調用函數,然後使用默認索引()?

class test 
{ 

    public function index() 
    { 

    } 

    public function home() 
    { 

    } 

} 

,但是當我把我的班一樣,

$test = new test(); 

將執行默認功能指數(),我的問題是我如何可以調用函數家()並忽略函數index()?

我嘗試在創建類似於$ test-> home()的對象之後調用該函數,但它仍然首先調用index(),然後調用home()。

一點幫助或方向將理解,

感謝, 阿里

+1

'index()'不會被調用!另外如果你調用'home()''index()'也不會被調用!我認爲你沒有顯示正確的代碼! – Rizier123

+0

當你實例化一個類的時候,PHP並不自己調用'index()'。在你的代碼中必須有別的東西調用這個方法。 [PHP構造函數/析構函數](http://php.net/manual/en/language.oop5.decon.php)手冊。如果在實例化類時調用了'index()',那麼它必須從類的__construct()方法中調用。 –

+0

是的,一個變化 - 實際上我也命名類索引,它的原因? –

回答

2

是的,你可以做到這一點加上魔術方法__construct()這樣的:

<?php 

    class index { 

     public function __construct() { 
      echo "1"; 
     } 

     public function index() { 
      echo "2"; 
     } 

     public function home() { 
      echo "3"; 
     } 

    } 

    $obj = new index(); 
    $obj->index(); 
    $obj->home(); 

?> 

輸出:

123 

因爲你可以se e每種方法都是按照你想要的方式調用

0

當這個類被實例化時,這些函數都不會被調用。實例化時調用的函數是__construct()

因此,如果您想在實例化類時調用home(),請在您的類中使用以下函數。

function __construct() { 
    $this->home(); 
} 

實例化類將調用__construct(),這將反過來調用home()