[英]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.