Tips

Con el fin de escribir código que funcione en el futuro, se recomienda no colocar muchas variables, funciones o clases en el espacio de nombres global. Esto prevendrá de conflictos de nombres con código de terceros así como con posibles adiciones futuras al lenguaje.

Una manera común de evitar conflictos con nombres de funciones y clases es añadirlos a su propio espacio de nombres dedicado.

<?php

namespace MiProyecto;

function
mi_función() {
return
true;
}

\MiProyecto\mi_función();

Esto todavía necesita que se mantenga la cuenta de los espacios de nombres ya utilizados, pero una vez que se decido el espacio de nombres que se va a usar se pueden añadir todas las funciones y clases e él sin tener que pensar más en conflictos.

Es una buena práctica limitar el número de variables añadidas al ámbito global para evitar conflictos de nombres con código de terceros.

Nota: Ámbito de variables

Debido a las reglas de ámbito de PHP, las variables definidas dentro de funciones y métodos no están en el ámbito global y, por tanto, no pueden crear conflictos con otras variables definidas en el ámbito global.

add a note add a note

User Contributed Notes 4 notes

up
27
willian at gt44 dot com
11 years ago
I don't think it makes sense nowadays. We have namespaces now!
up
1
kanone at rogers dot com
10 years ago
The javascript community has developed a strong cultural bias against adding anything to the global namespace.  (See e.g. Addy Osmani's article on Essential JavaScript Namespacing Patterns .)  Namespaces have been available in JS for many years and are ubiquitous.  There is also a great deal of freely available tutorial material for the interested reader.
up
1
mestresan AT gmail DOT com
10 years ago
Even though nowadays we do have namespaces, for the cases in which the user chooses to not use namespaces theses tips should be followed.
up
1
earnie at users dot sourceforge dot net
10 years ago
@willian at gt44 dot com: What about clashes of the namespace?  It is still good advice to check for previously used names before assigning anything to the global namespace.
To Top