在PHP文档中,Exception类的函数getMessage给出为:
final public string Exception::getMessage ( void )
由于存在范围解析运算符,这意味着它是一个静态函数,当我们捕获catch块中的异常时,我们会执行类似
的操作$e->getMessage();
但是在PHP中我们不能用对象引用静态函数。
答案 0 :(得分:0)
这不是因为它是用PHP文档中的范围解析运算符编写的,它是一个静态函数。
如果你仔细观察文档,你会发现每个方法都与该操作符有关 如果您想确定,则需要检查对象本身的文档:https://secure.php.net/manual/en/class.exception.php
在那里你可以看到:
/ *方法* /
public __construct([string $ message =“”[,int $ code = 0 [,Throwable $ previous = NULL]]])
final public string getMessage(void)
最终公开异常getPrevious(void)
最终公共混合getCode(void)
final public string getFile(void)
final public int getLine(void)
final public array getTrace(void)
final public string getTraceAsString(void)
public string __toString(void)
final private void __clone(void)
如果有静态方法,则会在此处写入。
另一个例子是DateTime对象:https://secure.php.net/manual/en/class.datetime.php
在这里,您可以看到关键字static
位于方法列表中。
答案 1 :(得分:0)
范围解析运算符::
需要用于调用静态方法,因为没有关联的实例可以从中调用它们。
类似地,它在描述方法的签名时使用,因为没有实例可以使用->
(对象范围)运算符。但它没有说或暗示方法是静态的。
static
关键字就是这样做的。 getMessage
不是静态方法,您不应该静态调用它。 Exception
类没有static
方法或属性。 Linky