2011-08-11 83 views
1

有沒有一種方法編纂在PHP如下:

class myClass extends parentClass{ 
    function myFunction(){ 
     calculate(); 
    } 
} 

class parentClass{ 
    public function calculate(){ 

    } 
} 

抑或是$this->總是需要?

class myClass extends parentClass{ 
    function myFunction(){ 
     $this->calculate(); 
    } 
} 
+1

@Cicada不能比問這個問題更難。 – Nicole

+0

@Cicada閱讀php.net網站,幾本書,過濾得到好的,幾個小時的試驗和錯誤,沒有思考適用於php變量的嚴格範圍,並且意識到範圍完全不同與PHP功能。但是,在我被帶走之前,我認爲你應該開始自己的線索來提出新的問題。謝謝你問。 :) – Matt

回答

3

您需要$this->函數,定義爲類方法。

您也可以使用全局函數出的類,它們neednot $this->

1
function myMethod() { echo "Outside Class Scope"; } 

class A { 
    function myMethod() { echo "Inside Class Scope"; } 

    function what_to_call() { 
     myMethod(); 
    } 
} 

應該PHP函數什麼時候A級'的what_to_call()方法中遇到myMethod()執行?

也考慮一個長期的繼承鏈,每個祖先都有它自己的myMethod()。 PHP應該調用什麼方法?當前對象'?家長'?祖父母的?

+0

我喜歡關於全局方法的歧義性,但如果PHP不需要'$ this->',那麼繼承不應該是一個問題(它不是許多其他語言 - 由於多態性,它始終是最具體的方法,除非用'super'前綴)。 – Nicole

+0

@renesis:true。只是說明事物的含糊性。 –

+0

對象只能有一個父母和祖父母 – Mike

0

您需要使用這個$這個 - >當你調用方法

0

$this->必須使用,如果你指的是方法(一類的內部定義,即一個函數)。 calculate()自己引用類之外的函數(就像任何內置函數一樣),這不是你想要的。

0
$this-> my_function 

這種說法是呼叫的功能,爲類:)