En realidad hay una diferencia, pero no siempre (ah, a la derecha).
En la construcción use
, nunca tiene que 'mencionar' la \
líder. En línea, nunca tendrá que hacerlo si la clase está en el mismo espacio de nombres, o si está utilizando una importación (importada con use ns
).
Pero a veces es necesario:
namespace foo;
class bar extends \baz\Bar {
Estás usando una línea indefinida/desconocido/no importados de clase, así que hay que mencionar la fuente.
Otro ejemplo es con las clases unnamespaced utilizados en un espacio de nombres, en línea:
namespace foo;
$dt = new \DateTime;
Una mejor práctica (en general) es importar todas las clases de las necesidades actuales de archivos. Una declaración de uso es muy, muy, muy, muy barata, así que no te contengas.
namespace foo;
use baz\Bar AS OtherBar;
use \DateTime;
class Bar extends OtherBar { // or something like that; in this case (same class name) it's tricky
function __construct() {
$dt = new DateTime;
editar 1
Además, no se olvide de utilizar nombres de las clases de espacios de nombres totalmente al pasar como cadenas, a pesar de que es posible que en el espacio de nombres derecha:
namespace foo;
$class = 'foo\bar';
"en el Usa constructo, nunca tienes que 'mencionar' al líder \ ": ¿por qué? (Estoy tratando de juntar todas las piezas) –
@MatthieuNapoli Porque 'use' siempre funciona desde la raíz. El '\' principal está implícito, por lo que es innecesario escribirlo. Es mucho más limpio sin. Wow, esta respuesta tiene solo 2,5 años de retraso ... – Rudie
última respuesta sigue siendo una respuesta :) –