2012-09-11 81 views
-1

我想分離我的接口和實現。所以我有一堆執行各種任務的函數。我原本將它們全部作爲Public,然後我會從其他頁面調用它們。我試圖通過將所有真實的工作負載函數設爲私有,然後使用1個公共函數來調用它們來加強它。PHP公共函數調用多個私有函數

這裏就是我想:

class TestClass 
{ 

    public function pub1() 
    { 

     $this->test1(); 
     $this->test2(); 
     $this->test3(); 

    } 

    private function test1() 
     { 

     $t1 = '1'; 

     return $t1 

     } 

    private function test2() 
     { 

     $t2 = '2'; 

     return $t2 

     } 

    private function test3() 
     { 

     $t3 = '3'; 

     return $t3 

     } 
} 

我想這樣的作品,但我無法弄清楚如何調用功能。我可以調用pub1()很好,但我似乎無法調用test1(),test2(),test3()以下的函數。

我可以做這個工作,如果我爲一個公衆做一個私人的功能,但我希望不必這樣做。

對此的任何幫助將是偉大的。

謝謝!

+1

真正的問題在你的問題不清楚。你的'pub1'調用返回字符串的私有方法。所以? – zerkms

+1

當然你不能調用'test1()','test2()'和'test3()'......它們是私人的 – JamesHalsall

+1

在每次函數調用之前放置'echo'。 'echo $ this-> test1(); echo $ this-> test2(); echo $ this-> test3();'。你會看到它的工作。 – nickb

回答

-4

也許是這樣的?

public function pub1 ($name) { 
    return $this->$name(); 
} 
2

您應該重新考慮您的設計。

物體與現實世界有着密切的關係。將對象看作一個黑盒子,然後查看外部需要的屬性和方法。

所以:

    如果你想調用類之外的功能使用公共
  • 如果要調用類或派生類中的函數,請使用protected。
  • 如果您只想在類中調用函數,請使用private。

如果您有接口,請定義它!讓一個類實現它。

+0

+1幫助。這很有幫助。我需要重新修改這個配置。謝謝! – Sequenzia

3

您對pub1()的調用應該正確調用test1(),test2()和test3(),就像您寫的一樣。但是,您的測試函數正在返回一個值,然後您的pub1()函數就會拋棄。如果你不需要從這些測試功能中實際返回任何東西給調用者,那麼你應該保持原樣。

+0

+1尋求幫助。我需要重新配置這個配置。謝謝! – Sequenzia

相關問題