PHP上的相反覆盖


Opposite override on PHP

有太多的子类,如果它们包含'example'getName()函数,我想处理它们,并在'SuperClass'中重写它们,并希望为每个子类打印'a'。我该如何实现?

<?php
   class SuperClass{
      public function getName(){
          echo 'a';
      }
   }
   class ChildClass extends SuperClass{
      public function getName(){
          echo 'b';
      }
   }
   class SecondChildClass extends SuperClass{
      public function getName(){
          echo 'c';
      }
   }
$a = new ChildClass();
$a->getName(); //prints a
$b = new SecondChildClass();
$b->getName(); //prints a
?>

例如,要正确工作,只需从SuperClass中删除getName()函数。如果您仍然希望每隔一段时间调用SuperClass getName,请尝试重载SuperClass getName函数。

getName($flag)

这样,如果你想对SuperClass变量进行类化,你就给它传递标志,否则它就会调用子类。

<?php
   class SuperClass{
      public function getName($flag){
          echo 'a';
      }
   }
   class ChildClass extends SuperClass{
      public function getName(){
          echo 'b';
      }
   }
   class SecondChildClass extends SuperClass{
      public function getName(){
          echo 'c';
      }
   }
   $a = new ChildClass();
   $a->getName(); //prints b
   $a->getName(true); //prints a
   $b = new SecondChildClass();
   $b->getName(); //prints c
   $b->getName(true); //prints a
?>