簡體   English   中英

PHP:實例化一個類並使用另一個類的方法

[英]PHP : instantiate a Class and using methods of another Class

我有一個名為A的類。我還有一個名為B的類,該類擴展了A。我必須實例化A,而不是B,但是我也需要使用B中的方法。 我怎樣才能做到這一點?

Class A
{
    public function foo() { }
}

Class B extends A
{
    public function bar() { }
}

$a = new A();
$a->bar();

我知道這是不可能的,但是我需要一個解決方案。

PS:我希望這個問題的標題是正確的。

$a = new A();
$a->bar();

會給您致命錯誤。 因為bar()不是A類的方法。 因此,您不能使用A類的對象來調用它。

這將正常工作:

Class A
{
   public function foo() { }
}

Class B extends A
{
   public static function bar() {  }
}

$a = new A();
B::bar();

我認為,您只是誤解了PHP的語法( 有時可能會造成混亂

extends關鍵字不會擴展父類( A ),但會創建一個新類B ,它是A的子A B繼承了A的方法,但A本身未更改。

B中的方法可以變成靜態的嗎?

Class A
{
    public function foo() { }
}

Class B extends A
{
    public static function bar2() { }
}

$a = new A();
$a->bar();
B::bar2();

顯然,將其命名為不同是有意義的,因為B :: bar()覆蓋了A :: bar()實現。

我認為您的結構可能會略有偏離。 嘗試將您想要的內容作為可重用的代碼段抽象到其自己的例程中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM