2009-03-09 16 views
36

Estoy usando PHP, pero creo que esta pregunta puede ser independiente del idioma.¿Es necesario usar la constante del separador de directorios?

Con PHP, una constante está definida por PHP, llamada DIRECTORY_SEPARATOR. Lo he visto en Joomla

define('DS', DIRECTORY_SEPARATOR); 

Pensé que esto parecía una buena idea, así que lo incorporé a algunos de mis sitios. Ahora me pregunto por qué. Solo tengo experiencia en Windows y OS X, y por lo que sé, Microsoft, Linux y Apple usan la barra diagonal como separador de directorios.

¿Está utilizando esta constante innecesariamente?

Respuesta

18

Mac OS Classic utiliza ":", por ejemplo. Ver Wikipedia para más detalles. También se considera un buen estilo al evitar 'magic numbers' o construcciones similares.

+0

Igualando el uso de '/' en el encauzamiento para un número mágico requiere alguna lógica de respaldo. – Kzqai

5

Windows realmente usa una barra diagonal inversa como el separador de directorios, aunque algunos entornos que tienen versiones de Windows se traducirán automáticamente entre barras diagonales inversas y barras diagonales inversas (me viene a la mente Python).

+7

En realidad, estoy bastante seguro de que Windows aceptará ambas y las traducirá según sea necesario (puedo usar CD/Windows desde la instancia de cmd). – overslacked

+1

@overslacked, parcialmente tienes razón. cd D:/foo solía romper, mientras que cd/foo funcionaba. –

18

En lo que respecta a PHP, puede que no lo necesite al construir una ruta, pero es importante para cualquier cosa que obtenga del sistema operativo.

De http://alanhogan.com/tips/php/directory-separator-not-necessary:

En un intento de escribir multiplataforma, de código PHP portátil, solía constante DIRECTORY_SEPARATOR PHP ’ s para escribir cadenas de ruta, por ejemplo "..".DIRECTORY_SEPARATOR."foo", porque “ propiamente dicha ” manera de hacerlo en Windows sería "..\foo" mientras que en todo lo demás (Linux, UNIX, Mac OS X) sería "../foo".

Bueno, como Christian en php.net señaló y los chicos en Web Design Forums confirmaron que ’ es completamente innecesario. Siempre que use la barra diagonal, “/”, ’ estará bien. Windows no lo hace ’, y ’ es el mejor para los sistemas operativos * nix.

(Tenga en cuenta que DIRECTORY_SEPARATOR sigue siendo útil para cosas como explode -ing un camino que el sistema le dieron. Gracias a las Sombras por señalar esto.)

Cuestiones relacionadas