繁体   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