Evaluación de espacios de nombres PHP

11

Estoy en la etapa de prelanzamiento de un proyecto PHP de código abierto, que espero sea utilizado por otros desarrolladores en sus propios proyectos. Actualmente, el proyecto no admite espacios de nombres y estoy tratando de evaluar si debería usar espacios de nombres o la convención de nomenclatura PEAR de Dir_Subdir_Class, que parece tener los mismos beneficios técnicos sin algunos de los inconvenientes. Para ser sincero, no es una elección fácil.

Algunos puntos de consideración contra espacios de nombres:

  • Una de las formas en que mi proyecto está tratando de diferenciarse al proporcionar una API más simple que otros proyectos similares. Debido a que los espacios de nombres son nuevos y también porque son más complicados que la convención de nomenclatura PEAR, introducirlos en la base de código hará que mi proyecto sea menos fácil de usar. Al implementarlos, pierdo cierta diferenciación en términos de facilidad de uso.
  • Si bien puedo ver algunos beneficios para los espacios de nombres, no parecen resolver un problema que deba resolverse en un producto PHP moderno que utiliza la convención de nomenclatura PEAR. Los conflictos de nombres al usar mi proyecto deben ser mínimos, si no inexistentes.
  • Este artículo me da una pausa para adoptar espacios de nombres ya que su implementación ha sido menos que estelar.
  • También dudo en subirme a un carro que quizás no llegue a ningún lado. Como los espacios de nombres son una característica nueva de PHP, todavía no estoy convencido de que se conviertan en estándar.
  • Compatibilidad. Casi todo el código PHP que se ha escrito nunca usa espacios de nombres, ya que es una característica nueva. Otras bibliotecas serían incompatibles sin una conversión.

Algunos puntos para usar espacios de nombres:

  • Percepción. Si los espacios de nombres se vuelven estándar y una práctica recomendada, mi proyecto podría verse rápidamente como poco profesional y obsoleto sin ellos.
  • Competencia. Si bien algunos proyectos PHP competidores están comenzando a usar espacios de nombres en sus últimas versiones, muchos aún no han dado el salto. Hacerlo ahora podría darle a mi proyecto una ventaja sobre otros proyectos.
  • El trabajo futuro sería más fácil si hiciera el cambio ahora antes de que el proyecto se haga público en lugar de después, donde tendría que soportar dos versiones del mismo por un tiempo.
  • Quiero admitir las mejores prácticas y si los espacios de nombres se convierten en una mejor práctica para PHP, mi proyecto debería hacer uso de ellos.

Por lo que puedo decir, debes elegir una forma u otra; No puedes hacer las dos cosas. ¿Hay algún punto que no haya considerado? ¿Hay algún signo objetivo (sin llamas, por favor) que apunte hacia o en contra de que los espacios de nombres se conviertan en el estándar profesional para PHP? Agradecería cualquier idea o recurso que estaría dispuesto a compartir, ya que necesito tomar una decisión pronto.

VirtuosiMedia
fuente

Respuestas:

5

Dos signos de que los espacios de nombres en PHP están aquí para quedarse:

  1. El esquema de nomenclatura PEAR se abandonó a favor de los espacios de nombres en PEAR2 .
  2. Uno de los objetivos establecidos de Zend Framework 2.0 es ser un ejemplo del uso de PHP 5.3 , utilizando espacios de nombres completos, entre otras cosas. Considero esto como una fuerte indicación de que Zend está totalmente comprometido con los espacios de nombres y continuará apoyándolos y evolucionándolos (con suerte para mejor).

Estoy totalmente de acuerdo con usted en que falta la implementación actual de espacios de nombres, por decir lo menos, pero sus argumentos en contra de usarlos no son tan sólidos. Incluso en su forma actual, los espacios de nombres proporcionan:

  • Mejor organización del código,
  • Evitar nombrar colisiones,
  • Contexto para clases, funciones y constantes.

Tenga en cuenta que la mayoría de los argumentos contra los espacios de nombres PHP son en comparación con las implementaciones en otros lenguajes y no contra sus méritos reales como característica.

Yannis
fuente
+1 para los enlaces. ¿Podría ampliar la mejor organización del código y puntos de contexto? Me cuesta un poco entender cómo proporciona una mejor organización del código. Parece que la mayoría de los proyectos se apegarán a la clase 1: 1 para estructurar archivos agrupados en directorios lógicos, lo mismo que usaría en el esquema de nombres PEAR. Incluso parece que ZF2 está usando el mismo directorio y estructuras de archivos en la mayoría de los casos, pero solo ahora con espacios de nombres. Es diferente, pero no veo necesariamente cómo es mejor o más organizado que los directorios y archivos bien nombrados en primer lugar.
VirtuosiMedia
También tengo problemas con el punto de contexto. En todo caso, parece que los espacios de nombres eliminan el contexto para tener un estilo de codificación más sucinto en lugar de agregar contexto. Como ejemplo, si instancia una nueva clase en lo profundo de un archivo, ahora necesito encontrar dónde se declaró el espacio de nombres para determinar qué clase es en lugar de tenerlo inmediatamente a la vista del nombre de la clase. A menos que me falte algo, parece que los espacios de nombres son menos detallados, pero a expensas de la claridad.
VirtuosiMedia
@VirtuosiMedia La pera y los esquemas de asignación de nombres de ZF viejos emulan espacios de nombres, por lo que mis tres puntos son algo cierto para ellos también. Lo que estoy tratando de señalar es que si esos puntos son ciertos en la implementación actual de los espacios de nombres PHP, entonces sus pequeños inconvenientes no son suficientes para no usarlos. Con una mejor organización del código, me refiero principalmente a los archivos, adoptando una estructura lógica y lógica y una jerarquía para sus clases, algo que por supuesto es factible sin espacios de nombres. Pero los espacios de nombres (y los esquemas que los emulan ) son una característica que lo ayuda a alcanzar los tres puntos a la vez.
Yannis
Gotcha Gracias por la aclaración. ¿Ve ventajas significativas para los espacios de nombres reales sobre los espacios de nombres emulados ?
VirtuosiMedia
1
@VirtuosiMedia Todos los puntos por usar espacios de nombres que haga en la pregunta son válidos. A eso agregaría que los espacios de nombres PHP ayudan a que su código se sienta un poco más natural para los codificadores de diferentes orígenes, algo que podría ser invaluable en un proyecto grande. Además, no hay un estándar para los espacios de nombres emulados , seguro que la mayoría de ellos son casi iguales, pero el uso de espacios de nombres reales garantiza que todos usen el mismo esquema. Por cierto, hay un espacio de nombres por ahí que podría usar para nombrar su código.
Yannis