"->"是什么意思?

8

可能的重复:
参考 - PHP 中这个符号是什么意思?
在 PHP 中,“->” 运算符被称为什么,如何在读取代码时说出它的名称?

这是一个非常新手级别的问题,所以提前道歉,但我在示例代码中看到过 -> 的使用,但我似乎找不到任何在线教程对它的解释(主要是因为 Google 忽略了它作为搜索术语 - 唉!)

以下是一个让我困惑的示例:

<?php
class customException extends Exception
{
public function errorMessage()
{
//error message
$errorMsg = 'Error on line '.$this->getLine().' in '.$this->getFile()
.': <b>'.$this->getMessage().'</b> is not a valid E-Mail address';
return $errorMsg;
}
}

$email = "someone@example.com";

try
  {
  //check if
  if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE)
    {
    //throw exception if email is not valid
    throw new customException($email);
    }
  //check for "example" in mail address
  if(strpos($email, "example") !== FALSE)
    {
    throw new Exception("$email is an example e-mail");
    }
  }

catch (customException $e)
  {
  echo $e->errorMessage();
  }

catch(Exception $e)
  {
  echo $e->getMessage();
  }
?> 

在像 echo $e->errorMessage(); 这样的代码中发生了什么?看起来它将变量 $e 传递到函数 errorMessage(),但如果是这样,为什么不采用更传统的方式做呢?
感谢您的任何帮助。

这不是那两件事的副本,但还是谢谢。 - Chuck Le Butt
请看这里,第二个可能的重复是不正确的:https://dev59.com/unA75IYBdhLWcg3w6Nn8 - Richard Marskell - Drackir
3个回答

4

这是用于面向对象编程中表示对象->属性的符号。

echo "$foo->bar" 会输出 $foo 的 bar 属性。


2

$e 是一个对象。

该对象具有函数 errorMessage()

因此,您正在调用 $e 的函数


2
不,它不是作用域解析运算符。::(也称为Paamayim Nekudotayim)是作用域解析运算符,请参见手册
不,它不是函数。这是面向对象编程,因此正确的术语是方法
不,它不是属性。再次强调,它是一个方法
我不知道->结构的任何术语。它用于调用方法或访问类的实例上的属性。在一个对象上。我认为你可以将其称为“实例运算符”。
在您的特定情况下,这是一个方法调用。errorMessage方法被调用在$e对象上,该对象是customException类的一个实例。

2
显然,它的官方名称是“对象操作符”。 - Chuck Le Butt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接