2011-04-04 19 views
8

duplicados posibles:
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?¿Qué significa "->"?

Ésta es una pregunta muy novato, así que disculpas de antemano, pero he visto -> utilizado varias veces en el ejemplo de código, pero yo Parece que no puede encontrar ninguna explicación en los tutoriales en línea de lo que hace. (Principalmente porque Google no tiene en cuenta como término de búsqueda - Do!)

Aquí hay un ejemplo que me confunde:

<?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 = "[email protected]"; 

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(); 
    } 
?> 

lo que está pasando en líneas tales como echo $e->errorMessage();? Parece que está pasando la variable $e a la función errorMessage(), pero si es así, ¿por qué no simplemente hacerlo de la manera más tradicional?

Gracias por cualquier ayuda.

+0

No es un duplicado de ninguna de esas dos cosas, pero gracias de todos modos. –

+0

Ver [aquí] (http://stackoverflow.com/questions/3037526/where-we-use-object-operator-in-php) ese segundo duplicado posible fue incorrecto. –

+0

Gracias. Eso es útil. –

Respuesta

2

No, no es un operador de resolución de alcance. :: (también llamado Paamayim Nekudotayim) es el operador de resolución de alcance, ver the manual.

No, no es una función. Esta es una programación orientada a objetos, por lo que el término correcto es method.

No, no es una propiedad. De nuevo, es un method.

No conozco ninguna terminología para la construcción ->. Se utiliza para llamar a métodos o para acceder a propiedades en una instancia de una clase. En un objeto Supongo que podría referirse a él como el "operador de instancias".

En su caso específico, es una llamada a un método. Se llama al método errorMessage en su objeto $e, que es una instancia de la clase customException.

+2

Aparentemente su nombre oficial es "operador de objetos". –

4

Se utiliza en la programación orientada a objetos para denotar objeto-> propiedad

echo "$foo->bar" se haría eco de la propiedad de la barra de $ foo

2

$e es un objeto.

Ese objeto tiene la función errorMessage()

Por lo tanto, están llamando $e 's función