访问类方法的PHP区别
$foo->bar()
和$foo::bar()
什么区别?
$foo::bar()
是静态方法bar()
的调用,这意味着$foo
对象不会被__construct()
方法实例化。
当调用$foo->bar()
, $foo
对象必须先被实例化! 例:
$foo = new Foo; // internally the method __constuct() is called in the Foo class!
echo $foo->bar();
通常情况下,您不会像现在的示例( $foo
)那样在现有对象上调用静态方法,您可以直接在类Foo上调用它:
Foo::bar();
第一个
$foo->bar();
你调用(对象)方法,而用
Foo::bar();
你可以调用类(静态)方法。
它可能调用对象的类方法。 也就是说,你的第二个例子做了什么。 所以这
$foo = new Foo;
$foo::bar();
是相同的
Foo::bar();
甚至
$classname = get_class($foo);
$classname::bar();
更新:错过了$foo
也可能只是一个带有类名的字符串。
$foo = 'Baz';
$foo::bar(); // Baz::bar();
链接地址: http://www.djcxy.com/p/58021.html
上一篇: PHP difference in accessing class methods
下一篇: PHP Using classes