初学者的帮助

可能重复:
在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();CC++

但是我们在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

下一篇: >myMethod(); vs MyClass::myMethod();