Php OOP方法重写
有没有办法在父类中获取foo方法的返回值?在下面的代码中,我得到了b,我的目标是在不更改方法名称的情况下得到a,并且不使用returnnewa->foo 更新:例如,目标是从另一个第三个类访问父类中的foo方法Php OOP方法重写,php,oop,overriding,Php,Oop,Overriding,有没有办法在父类中获取foo方法的返回值?在下面的代码中,我得到了b,我的目标是在不更改方法名称的情况下得到a,并且不使用returnnewa->foo 更新:例如,目标是从另一个第三个类访问父类中的foo方法 class c { public function __construct(i $b) { $this->b = $b; } public function get() { $this->b->foo1(); } }
class c {
public function __construct(i $b)
{
$this->b = $b;
}
public function get() {
$this->b->foo1();
}
}
您询问是否可以通过调用类型为b的对象的方法来获取a::foo的返回值,即“a”。这应该很直截了当,除非我完全不明白你想做什么:
<?php
interface i {
function foo();
}
class a implements i {
public function foo() {
return 'a';
}
}
class b extends a {
public function get() {
return parent::foo();
}
public function foo() {
return 'b';
}
}
$b = new b;
echo $b->get(); // obviously returns 'a'
这是因为您显式调用了parent::foo,它显然解析为a::foo 而不是调用
public function get() {
return parent::foo1();
}
像这样使用父对象调用方法foo
public function get() {
return parent::foo();
}
结果你会得到a,我不确定——就像@arkascha一样——实际目标是什么。下面是另一种可能的情况,即显式地通过方法foo1执行可能意味着什么:
<?php
interface i {
function foo();
}
class a implements i {
public function foo() {
return 'a';
}
public function foo1() {
// here the 'self' is the trick instead of $this (and the only change to your code)
return self::foo();
}
}
class b extends a {
public function get() {
return parent::foo1();
}
public function foo() {
return parent::foo();
}
}
$b=new b();
echo $b->get(); //returns a
在子类中调用parent::foo以直接访问parent foo方法 返回self::foo;公共职能部门1{
<?php
interface i {
function foo();
}
class a implements i {
public function foo() {
return 'a';
}
public function foo1() {
// here the 'self' is the trick instead of $this (and the only change to your code)
return self::foo();
}
}
class b extends a {
public function get() {
return parent::foo1();
}
public function foo() {
return parent::foo();
}
}
$b=new b();
echo $b->get(); //returns a