【问题标题】:How to call super in PHP?如何在 PHP 中调用 super?
【发布时间】:2009-12-25 20:42:55
【问题描述】:

我有一个classB,它扩展了classA

classA classB 中我都定义了fooBar() 方法。

fooBar()classB 中,我想一开始就打电话给classAfooBar()

就像我习惯的那样,来自 Objective-C。这在PHP中可能吗?如果有,怎么做?

【问题讨论】:

    标签: php oop


    【解决方案1】:
    parent::fooBar();
    

    直接来自manual

    ... 双冒号,是一个标记,允许访问... 类的重写属性或方法。

    ...

    示例#3 调用父类的方法

    <?php
    class MyClass
    {
        protected function myFunc() {
            echo "MyClass::myFunc()\n";
        }
    }
    
    class OtherClass extends MyClass
    {
        // Override parent's definition
        public function myFunc()
        {
            // But still call the parent function
            parent::myFunc();
            echo "OtherClass::myFunc()\n";
        }
    }
    
    $class = new OtherClass();
    $class->myFunc();
    ?>
    

    【讨论】:

      【解决方案2】:

      只是一个简短的说明,因为这在 Google 搜索中并不容易出现,这在 php 文档if you can find it 中有很好的记录。如果你有一个子类需要调用超类的构造函数,你可以这样调用它:

      parent::__construct(); // since PHP5
      

      一个例子是如果超类在它的构造函数中有一些参数并且它的实现类需要调用它:

      class Foo {
      
        public function __construct($lol, $cat) {
          // Do stuff specific for Foo
        }
      
      }
      
      class Bar extends Foo {
      
        public function __construct()(
          parent::__construct("lol", "cat");
          // Do stuff specific for Bar
        }
      
      }
      

      你可以找到一个更励志的例子here

      【讨论】:

      • 激励示例的链接不见了
      • @Jonathan 我已更新链接以在 Wayback 机器上查找文章
      猜你喜欢
      • 1970-01-01
      • 2010-11-24
      • 1970-01-01
      • 2017-01-11
      • 2018-08-01
      • 2012-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多