Php 使用相同的签名/名称调用父函数
A和B具有相同签名的函数——让我们假设:Php 使用相同的签名/名称调用父函数,php,oop,inheritance,extends,Php,Oop,Inheritance,Extends,A和B具有相同签名的函数——让我们假设:foo($arg)——并且类A扩展了B 现在我有一个例子: $a = new A(); $a.foo($data); 我还可以通过$a运行父级(B)的foo()函数吗?还是它被重写了 谢谢! Nimi将被覆盖,但如果您想同时使用这两个选项,可以执行以下操作: function parentFoo($arg) { return parent::foo($arg); } function foo($arg) { $result = par
foo($arg)
——并且类A扩展了B
现在我有一个例子:
$a = new A();
$a.foo($data);
我还可以通过$a
运行父级(B)的foo()
函数吗?还是它被重写了
谢谢!
Nimi将被覆盖,但如果您想同时使用这两个选项,可以执行以下操作:
function parentFoo($arg)
{
return parent::foo($arg);
}
function foo($arg)
{
$result = parent::foo($arg);
// Do whatever you want
}
如果希望子函数调用父函数,请执行以下操作:
function parentFoo($arg)
{
return parent::foo($arg);
}
function foo($arg)
{
$result = parent::foo($arg);
// Do whatever you want
}
有关更多信息,请参见此URL:您可以使用您可以编写的类A中的
parent::foo()
访问父方法
parent::foo($param);
调用基类foo(…)方法。
是PHP中的字符串连接运算符。要调用方法,请使用->
要调用重写的方法,请使用parent::method()
我还可以通过$a运行父级的foo()函数吗?或者它被重写了吗
不是来自“外部”。说:
回答您的问题,不,您不能通过类A的对象调用父对象的foo()方法,因为对象A在其公共API中理解的唯一foo()方法是它自己的foo()方法。你可能需要考虑一下你的设计。如果B的foo()为A的foo()提供了不同的功能,那么其中一个应该覆盖另一个吗?或者您需要考虑A的foo()通过parent::foo()调用B的foo()——假设您希望在每次调用A的foo()时调用B的foo()。或者使用另一种模式。如果A的foo()并不总是适用于A的对象,那么您可能需要查看或pattern的
如果您是从OO编程开始的,我不能推荐足够高的级别。感谢您的快速响应。这种方法很清楚,但是有没有任何方法可以从外部类访问foo(),而不生成B对象?在您的示例中,$B
来自何处?Ehr,嗯,拼写错误发生了:)相应地编辑了示例。