【问题标题】:PHP: Access Method in sub-classPHP:子类中的访问方法
【发布时间】:2015-10-27 15:29:11
【问题描述】:

当我在同一类的另一个子类中时,我想知道如何访问该类的子类中的方法... 例如:

class foo {

}

class bar extends foo {
    public function something() {
        //do something here
    }
}

class soap extends foo {
    $this->something();   //This is the method I wanna call...
}

如您所见,我想从另一个子类访问子类的方法。 我如何在 PHP 中做到这一点?

【问题讨论】:

  • @Federico 它可以是任何方法...我只想知道如何从任何其他子类访问 bar 中的方法
  • 你的soap类必须扩展foo类。
  • 除非bar::something() 是静态的,否则您需要有一个bar 的实例 才能调用something()。 soap 和 bar 彼此之间没有任何关系。他们共享同一个父类这一事实没有任何意义。
  • @Federico.. 如果我这样运行它会给我“方法不存在”错误...
  • @RocketHazmat... 那么你认为在父类中设置 something() 方法更明智吗?

标签: php class methods


【解决方案1】:

你可以直接做,但是只有如果soap也是bar的子类:

class soap extends bar {
    public function someFunction() 
    {
        $this->something();   // This will work
    }
}

如果不是,你还有一个选择:获取bar的实例,然后调用其上的方法:

class soap extends foo {
    public function someFunction(bar $bar) 
    {
        $bar->something();   // This will also work
    }
}

除此之外,您无能为力。由于bar 不在soap 的继承链中,因此无法在soap 的任何方法中仅使用$this 来引用something。

【讨论】:

  • 第二种方法奏效了,将实例放入方法中。谢谢!
猜你喜欢
  • 2013-12-03
  • 2017-12-13
  • 2012-11-25
  • 2020-02-13
  • 2021-10-18
  • 1970-01-01
  • 2012-05-27
  • 1970-01-01
相关资源
最近更新 更多