php多个类和具有相同名称的方法

时间:2011-11-26 20:03:19

标签: php class methods naming

如果我从“workingCLass”调用“myClass :: getItems()”,将调用getId方法?那个回声“你好”或“再见”的人?谢谢。

class myClass extends otherClass {
   function getId(){
      echo "hello";
   }
}


class otherClass{
   function getItems(){
      $this->getId();
   }
   function getId(){
      echo "bye";
   }
}


class workingClass extends myClass {
   function __construct(){
      $this->getItems();
   }
}

2 个答案:

答案 0 :(得分:2)

"hello"的那个,因为您明确指定了要调用的那个。

问题是,它不是静态的,你可以在静态环境中调用它。

编辑:使用$this时,它不会调用任何内容,因为getItems()中没有workingClass。如果workingClass扩展了otherClass,它就会执行"bye"

答案 1 :(得分:2)

这将导致致命错误,因为您静态调用此方法(::)并且在此方法中使用$this特殊变量,该变量引用workingClass(来自它被称为)workingClass没有getId方法。

好的,现在在修复示例之后我可以说它会输出'hello',因为当从对象($this->)调用方法时,PHP将始终运行在最新子类中定义的一个。