$foo->bar()
和$foo::bar()
有什么区别?访问类方法的PHP区别
回答
$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不会被__construct()方法实例化。”意思?它不可能在不调用'__construct()'的情况下实例化对象:? – KingCrunch 2011-02-24 14:19:36
在@KingCrunch中,当没有定义__construct方法时,可以实例化一个没有(自动)调用__construct()的对象。但是这并没有多大意义,在这种情况下,你会选择以静态方式调用所有其他方法。 – powtac 2011-02-24 14:22:22
随着第一一个
$foo->bar();
调用(对象)的方法,而用
Foo::bar();
你可以调用类(静态)方法。
它可能调用对象的类方法。也就是说,你的第二个例子做了什么。因此,这
$foo = new Foo;
$foo::bar();
是相同的
Foo::bar();
甚至
$classname = get_class($foo);
$classname::bar();
更新: 错过了什么 $foo
也可以只是与类名的字符串。
$foo = 'Baz';
$foo::bar(); // Baz::bar();
-1:我很抱歉downvote,但调用对象的静态方法会导致PHP吐出通知,可以说这意味着代码不完全正确。根据我的愚见,这是许多人不幸认为理所当然的做法。 – Christian 2011-02-24 14:03:19
我说过它可能,这不是一个好主意。然后,确切地说,提问者想知道什么。而且它不会再使用PHP5.3及以上版本发布通知。但是,我同意,那不是很好的做法。 (好的,也许我忘了,'$ foo'也可以是一个字符串^^) – KingCrunch 2011-02-24 14:16:21
- 1. 类别列表中的访问方法
- 2. 访问案例类别的方法
- 3. 默认(包)访问级别的类中方法的默认(包)和公共访问级别是否有区别?
- 4. 访问Joomla中的PHP类方法
- 5. 访问PHP方法
- 6. 访问类方法
- 7. 访问PHP方法生成的方法
- 8. php:与isset方法的区别?
- 9. 这两种访问SharePoint模型的方法有什么区别?
- 10. 这两个访问器/ getter/setter方法之间的区别?
- 11. C#:方法类型之间的区别
- 12. 这两种初始化PHP类的方法有什么区别?
- 13. 不同级别的访问的方法
- 14. 访问器和增变器方法有什么区别?
- 15. 了解方法,泛型类型之间区别的问题
- 16. 会员访问区别
- 17. C++跨类访问方法
- 18. 从类方法访问UINavigationController
- 19. 访问类方法的问题
- 20. Java:你如何访问两个级别的父类方法?
- 21. 受保护访问修饰符如何工作,它与访问对象类有何区别克隆方法
- 22. 跟进:类方法和实例方法之间的区别?
- 23. Get方法和Set方法在类中的区别
- 24. 类方法和实例方法之间的区别?
- 25. 函数方法和分类方法在reactjs中的区别
- 26. PHP访问类
- 27. 在PHP类或PHP方法中self和$ this->之间的区别在哪里?
- 28. 访问PHP全局变量的方法
- 29. PHP OOP访问方法的好习惯?
- 30. 访问类方法到实例方法的最佳方法
了解更多关于静态@ http://php.net/manual/en/language.oop5.static.php – MatejB 2011-02-24 13:58:55
可能重复的[在PHP中,什么之间::和区别? - >]( http://stackoverflow.com/questions/3173501/in-php-whats-the-difference-between-and) – Gordon 2011-02-24 14:16:03
*(相关)* [参考:什么是符号在PHP中的意思](http://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php) – Gordon 2011-02-24 14:16:55