在php中调用接口方法时出错
嘿,伙计们,我有这个示例代码,我想像下面这样调用这个方法:在php中调用接口方法时出错,php,Php,嘿,伙计们,我有这个示例代码,我想像下面这样调用这个方法: <?php interface Item{ function getRes(); } class Weapon implements Item{ public function getRes(){ echo "Res"; } } abstract class Player implements Item{ public function defend(){
<?php
interface Item{
function getRes();
}
class Weapon implements Item{
public function getRes(){
echo "Res";
}
}
abstract class Player implements Item{
public function defend(){
$this->Item->Weapon->getRes();
}
}
?>
我知道这不起作用,但如何做才是最好的调用方式。如果要在player中继承Item类(我认为player不是Item;)的一种类型,则需要实现getRes函数 离开这一点,你很可能希望依靠依赖注入(DI)来让你的玩家获得武器
interface Item {
function getResponse();
}
interface AttackItem extends Item {
}
interface DefenseItem extends Item {
}
class Sword implements AttackItem {
public function getResponse(){
return "Swing of the sword!";
}
}
class Shield implements DefenseItem {
public function getResponse(){
return "Defend with the shield!";
}
}
class Player {
public function __construct(AttackItem $attackItem, DefenseItem $defenseItem) {
$this->attackItem = $attackItem;
$this->defenseItem = $defenseItem;
}
public function attack(){
return $this->attackItem->getResponse();
}
public function defend(){
return $this->defenseItem->getResponse();
}
}
$player = new Player(new Sword(), new Shield());
echo $player->attack() . "\n";
echo $player->defend() . "\n";