![](/img/trans.png)
[英]PHP 5.3: Using __autoload() to instantiate a class inside another class
[英]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.