初学者的帮助
可能重复:
在PHP中,::和 - >有什么区别?
这是我上一个问题的延续 - 但我认为它的独特性足以证明一个新问题。
有什么区别:
Message::listMessages();
和
$message->listMessages();
我正在创建一个mini-cms,我想要一个以统一的方式显示错误的系统。
干杯,基兰
当我们想要在一个类的对象之间共享信息,或者想要表示与类本身相关的东西,而不是任何特定的对象时,静态方法就会派上用场。
两者的区别在于它们被调用的方式。 例如, Message::listmessages()
是一个静态方法,可以这样调用:
$messages = Message::listmessages($args);
为了使用上述内容,您不需要首先创建类Message的对象。 另外,请注意,当您想要在确定的预配置变量上返回结果时,应该使用它,并且不基于类Message的属性
但是, $message->listmessages()
是一个实例方法,可以这样调用:
$message = new Message();
$messages->$args = $args
$messages= $message->listmessages();
当您想调用类Message的运行时属性上的函数时,它用于泛型occassions。
当我理解你的问题时,
我们使用这种方式Message::listMessages();
在C
和C++
但是我们在PHP
中使用的正确语法是$message->listMessages();
谢谢。
我假设你的类Message
是这样定义的:
class Message {
//...
static function listMessages() {
//...
}
//...
}
它们是相同的,它们都从Message
调用静态方法listMessages
,但是, $message->listMessages()
需要更少的查找。
根据测试,你不能声明两个名称相同的方法,一个是静态的,一个是成员:
$ php5-cgi
<?php
class A { static function f() { }
function f() { } }
?>
PHP Fatal error: Cannot redeclare A::f() in - on line 2
Status: 500 Internal Server Error
X-Powered-By: PHP/5.3.2-1ubuntu4.5
Content-type: text/html
链接地址: http://www.djcxy.com/p/58017.html
上一篇: Beginner help