2012-05-28 13 views
25

Acabo de ver el uso de una barra invertida en una referencia a un objeto PHP y tenía curiosidad acerca de ello (nunca he visto esto antes). Qué significa eso?Backslash en PHP: ¿qué significa?

$mail = new SendGrid\Mail(); 

Si tiene curiosidad, aquí está SendGrid's documentation.

+1

Este es un duplicado de http://stackoverflow.com/questions/4075521/backslash-syntax-when-creating-objects, por lo que puede encontrar su respuesta allí. – 11684

+0

@ 11684 sí, acabo de ver que ... oops – Kyle

+0

Esta gran publicación explica con mucho más detalle http://stackoverflow.com/q/4790020/6521116 –

Respuesta

26

Es porque están usando PHP namespaces. Los espacios de nombres son nuevos a partir de PHP 5.3.

+0

necesita actualizarse, ahora, muchos proyectos utilizan. –

13

Es el operador de espacio de nombres de PHP: http://php.net/manual/en/language.namespaces.php.

No preguntes por qué es una barra invertida. Es (imho) la elección más estúpida posible que podrían haber hecho, basando sus decisiones en un sistema de puntuación altamente sesgado/intolerante que tenía sentido solo para los desarrolladores.

+2

Bueno, la barra diagonal inversa era la mejor opción disponible (¿querrías usar ':::' o '-> ->'?). – xfix

+0

@GlitchMr ¿Por qué no '->' solo como objetos regulares ... – jadkik94

+0

Eso podría funcionar también, pero '-> Hola-> algo()' se vería feo. Y no creo que a PHP le gustaría que el operador significara dos cosas a la vez (especialmente tan diferente, cuando vería 'Abc-> def()' por primera vez, pensaría que es un método constante 'Abc'). – xfix

6

Esta es la sintaxis para los espacios de nombres. Puede leer más sobre los espacios de nombres en PHP documentation. Ellos requieren al menos PHP 5.3.

Por ejemplo:

namespace SendGrid; 
function Mail() { 
    // You can access this function by using SendGrid\Mail() externally 
}