访问类方法的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
