2012-03-15 17 views
12

En PHP, estoy usando espacios de nombres en el nivel de clase. Sin embargo, Netbeans sigue diciéndome el espacio de nombre de mis funciones globales también. Por ejemplo, si escribo¿Debería el espacio de nombres funciones globales en PHP?

str_replace('stuff'); 

continuación Netbeans sugerirá cambiar a:

\str_replace('stuff'); 

¿Es esta una recomendación PHP, o simplemente Netbeans siendo exceso de celo? No he podido encontrar nada en la documentación de PHP que diga de cualquier manera.

No lo veo causando ningún problema en el código. Sin embargo, se siente mal ignorar a Netbeans sin saber por qué lo recomienda en primer lugar. Pero tampoco me parece justo cambiar mi práctica de codificación sin saber que es lo correcto.

+0

Ì no estoy enterado de tal recomendación oficial. ¿Podría ser parte de la convención de codificación que estás usando? – Gordon

+0

La forma en que lo veo es si está usando espacios de nombres en su código y llama a las funciones globales desde otros espacios de nombres que debería (probablemente) pero si no usa espacios de nombres en ningún lado, no tiene sentido hacerlo. – h00ligan

+0

@ h00ligan no hay nada en el manual de PHP que lo diga y seguro que no es necesario ya que PHP recurrirá al alcance global en las llamadas a funciones. – Gordon

Respuesta

5

No hay tal recomendación en

Tampoco es necesario utilizar el identificador global desde PHP se replegará para la definición de la función global cuando no hay ninguna función de ese nombre en el espacio de nombre actual.

Dicho esto, la única razón para agregar el identificador es hacer más explícito que desea utilizar el elemento global real para evitar cambios accidentales en los comportamientos del código cuando alguien agrega una función del mismo nombre en el espacio de nombres actual .

Es posible que desee preguntar en el Netbeans Mailing List para obtener más información sobre por qué su IDE lo sugiere.

1

Overzealous para estar seguro, pero no puedo reproducir esto es Netbeans 7.0.1, con PHP Plugin 1.17.1. No es la convención, de todos modos, y no lo consideraría una mejor práctica.

+0

Extraño: no he cambiado ninguno de los valores predeterminados. El mensaje exacto es 'Fix name to "\ str_replace"'. –

+0

Por lo tanto, parece que es materia de versiones posteriores. Porque tengo NetBeans 8.1, y ahí está, como dice el usuario @Blowski. –

0

Netbeans simplemente no está siguiendo las reglas documentados de la resolución de los espacios de nombres as documented:

  1. clases globales (como DateTime) necesita ser calificado de otra forma, PHP buscará esa clase en el espacio de nombres actual.
  2. funciones globales (como array_filter) y constantes se encontrarán en el espacio de nombres global (sin calificación explícita) si no existen en el espacio de nombres actual.

En otras palabras, su código debe considerarse idiomático en función de las reglas documentadas.

Cuestiones relacionadas