【问题标题】:What does "->" mean? [duplicate]“->”是什么意思? [复制]
【发布时间】:2011-07-29 11:11:50
【问题描述】:

可能的重复:
Reference - What does this symbol mean in PHP?
In, PHP, what is the “->” operator called and how do you say it when reading code out loud?

这是一个非常新手的问题,所以提前道歉,但我已经看到 -> 在示例代码中多次使用,但我似乎无法在在线教程中找到任何解释它的作用。 (主要是因为 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-&gt;errorMessage(); 等行中发生了什么?它看起来像是将变量 $e 传递给函数 errorMessage(),但如果是这样,为什么不以更传统的方式进行呢?

感谢您的帮助。

【问题讨论】:

  • 这不是这两件事的重复,但还是谢谢。
  • 查看here,第二个可能的重复项不正确。

标签: php syntax


【解决方案1】:

在面向对象编程中用于表示对象->属性

echo "$foo-&gt;bar" 会回显 $foo 的 bar 属性

【讨论】:

    【解决方案2】:

    不,它不是范围解析运算符。 ::(也称为 Paamayim Nekudotayim)是范围解析运算符,请参阅 the manual

    不,它不是一个函数。这是面向对象的编程,所以正确的术语是method

    不,它不是属性。同样,它是method

    我不知道-&gt; 构造的任何术语。它用于调用方法或访问类的 instance 上的属性。在一个物体上。我想您可以将其称为“实例运算符”。

    在您的具体情况下,它是一个方法调用。正在您的 $e 对象上调用 errorMessage 方法,该对象是 customException 类的一个实例。

    【讨论】:

    • 显然它的正式名称是“对象运算符”。
    【解决方案3】:

    $e 是一个对象。

    那个对象有函数errorMessage()

    因此你正在调用$e的函数

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-12
      • 2015-01-22
      • 2020-10-27
      • 2015-07-15
      • 2018-07-17
      • 2012-08-13
      • 2011-12-23
      • 2013-10-27
      相关资源
      最近更新 更多