是否有一种快捷方法用于从PHP中的对象范围内访问对象方法?

时间:2012-07-18 14:58:32

标签: php methods

我只是根据其他语言的经验来询问,这些经验可以消除基于类范围的全局函数调用的方法调用 - 例如:

class Foo {
 function bar(){
   echo 'bletch';
 }

 function baz(){
   $this->bar();
 }
}

所以我想我在问是否还有另一种做法$this->bar(),或者换句话说,我怎么能忽略$this,这看起来似乎是多余的?

2 个答案:

答案 0 :(得分:4)

不,您无法在PHP中bar()baz()访问$this->,因为您可以轻松拥有不属于任何类的全局函数bar() /对象(这与你正在考虑的大多数语言不同),这会导致冲突。

答案 1 :(得分:0)

简而言之,这是不可能的。

因为调用bar会在类之外调用名为bar的函数,并给出以下内容:

function bar() {
 echo 'foo';
}

class Foo {
 function bar(){
   echo 'bletch';
 }

 function baz(){
   $this->bar();
 }

 function foobar() {
   bar();
 }
}

$instance = new Foo();

$instance->foobar();

这会回复foo的{​​{1}},而不是function bar()的{​​{1}}