在PHP中访问父方法

在PHP中访问父方法,php,Php,我有一个顶级类,它调用另一个具有函数的类。从函数内部,如何访问TopLevelClass的一些其他方法 如果是JavaScript,我的问题会是: $this->parent()->parent()->do_something() 这相当于 $this_function->AnotherClass()->LevelClass()->some_other_methods() 在我的脑海里: parent::some_other_methods(); 在我的

我有一个顶级类,它调用另一个具有函数的类。从函数内部,如何访问TopLevelClass的一些其他方法

如果是JavaScript,我的问题会是:

$this->parent()->parent()->do_something()
这相当于

$this_function->AnotherClass()->LevelClass()->some_other_methods()

在我的脑海里:

parent::some_other_methods();

在我的脑海里:

parent::some_other_methods();

如果您使用的是正确的继承,那么只需要parent关键字


如果您使用的是正确的继承,那么只需要parent关键字


您可以使用以下命令使另一个类扩展TopLevelClass:

class AnotherClass extends TopLevelClass {
  // class stuff in here
}

这将使另一个类可以访问TopLevelClass中的所有方法以及它自己的受私有作用域状态约束的主题。

您可以使用以下命令使另一个类扩展TopLevelClass:

class AnotherClass extends TopLevelClass {
  // class stuff in here
}


这将使另一个类可以访问TopLevelClass中的所有方法以及它自己的受私有作用域状态约束的对象。

这是通过当前作用域链访问该方法还是启动该类的新实例?它不会创建新实例,因为新实例不是其父实例。这是通过当前作用域链访问该方法还是启动该类的新实例?它不会创建新实例,因为新实例不是其父实例。如果有两个冲突的方法名称,会发生什么情况?例如,假设两个方法都有称为do_hooks的静态方法-是否必须重命名以使其唯一?扩展方法仍然可以使用parent::do_hooks调用其父方法。有关一些示例,请参阅。如果有两个相互冲突的方法名,会发生什么情况?例如,假设两个方法都有称为do_hooks的静态方法-是否必须重命名以使其唯一?扩展方法仍然可以使用parent::do_hooks调用其父方法。看一些例子。你能做两个层次的父母吗?例如,parent::fooMethod::parent::anotherMethod或parent::parent::anotherMethod?否,对于多个继承级别,您需要在中间级别类中具有访问方法并调用它。如果使用名为baz的类重复此模式,则baz方法必须调用parent::barMethod@editor:如果您需要直接访问对象的父对象的父方法,则您的设计很可能有问题。我试图在问题的附加注释中解释我自己。我现在正在重新实例化类,我想每个类只设置一次。你能做两个级别的家长吗?例如,parent::fooMethod::parent::anotherMethod或parent::parent::anotherMethod?否,对于多个继承级别,您需要在中间级别类中具有访问方法并调用它。如果使用名为baz的类重复此模式,则baz方法必须调用parent::barMethod@editor:如果您需要直接访问对象的父对象的父方法,则您的设计很可能有问题。我试图在问题的附加注释中解释我自己。我目前正在重新实例化类,我想每个类只设置一次。你能举个例子说明为什么要这样做吗?当然。我想使用一个类作为其他类之间的消息总线。比如说,有一个子类是Queue,在其中可以调用Queue->get\u item之类的方法。还有一个是工作->做工作。我希望能够在总线类中声明和实例化一次类,并让模块通过总线类相互调用。例如,从Work->do_Work,您可以调用$Bus->queue->get_item,$Bus->queue->delete_item或$Bus->notify->item_processed。这一切都可以正常工作。关键是我想在WordPress上设置一个基于钩子的界面。所以我想在$Bus级别提供一个dou-hook函数调用。要从队列执行此操作,您需要访问方法父队列父总线。我不确定我是否完全理解您的目标。在我看来,您将拥有类总线,在构建过程中,它将实例化类队列和类工作;或者,您可以将总线设置为单例,并在需要访问它的任何时候使用Bus::getInstance->。但是,再一次,我不能100%确定你在这里的意图。我不太明白,但我认为你可能想看看观察者模式,特别是如果你想实现钩子。你能举个例子说明你为什么要这样做吗?当然。我想使用一个类作为其他类之间的消息总线。比如说,有一个子类是Queue,在其中可以调用Queue->get\u item之类的方法。还有一个是工作->做工作。我希望能够在总线类中声明和实例化一次类,并让模块通过总线类相互调用。例如,从Work->do_Work,您可以调用$Bus->queue->get_item,$Bus->queue->delete_item或$Bus->notify->item_processed。这一切都可以正常工作。关键是我想在WordPress上设置一个基于钩子的界面。所以我想在$Bus级别提供一个dou-hook函数调用。要从队列中执行此操作,您需要访问
方法父队列父总线。我不确定我是否完全理解您的目标。在我看来,您将拥有类总线,在构建过程中,它将实例化类队列和类工作;或者,您可以将总线设置为单例,并在需要访问它的任何时候使用Bus::getInstance->。不过,我也不是100%确定你在说什么。我不太明白,但我认为你可能想看看观察者模式,特别是如果你想实现钩子的话。