Al comenzar con PHP, puede ser abrumador descubrir la mejor manera de organizar un proyecto. Si alguna vez ha estado confundido con dónde colocar sus imágenes, bibliotecas externas o mantener su lógica separada de su diseño, consulte estos consejos; te llevarán en la dirección correcta.
Yo diría que la primera cosa para que su proyecto se ponga en marcha rápidamente es tener una estructura de directorios sólida que puede reutilizar para múltiples proyectos. Si está utilizando un marco, generalmente proporcionará una estructura para usar, pero en este escenario estamos trabajando en un sitio o aplicación simple.
Probablemente estés muy familiarizado con el public_html
estructura. Esta es la raíz de documentos en la que se accede a todos sus archivos públicos (/public_html/page.php
se accede en example.com/page.php
).
los recursos
El directorio debe contener todas las bibliotecas de terceros, bibliotecas personalizadas, configuraciones y cualquier otro código que actúe como un recurso en su proyecto..
Como diseñadores y desarrolladores, nuestro principal objetivo es hacer el menor trabajo posible. Una forma de alcanzar este objetivo es con los archivos de configuración. Para tener una mejor idea de lo que debería tener el archivo de configuración, consulte este ejemplo.
array ("db1" => array ("dbname" => "database1", "username" => "dbUser", "password" => "pa $$", "host" => "localhost"), "db2 "=> array (" dbname "=>" database2 "," username "=>" dbUser "," password "=>" pa $$ "," host "=>" localhost "))," urls "=> array ("baseUrl" => "http://example.com"), "path" => array ("resources" => "/ path / to / resources", "images" => array ("content" = > $ _SERVER ["DOCUMENT_ROOT"]. "/ Images / content", "layout" => $ _SERVER ["DOCUMENT_ROOT"]. "/ Images / layout"))); / * Normalmente, colocaré lo siguiente en un archivo de arranque o en algún tipo de archivo de configuración del entorno (código que se ejecuta al inicio de cada solicitud de página), pero funcionan igual de bien en su archivo de configuración si está en php (algunas alternativas a php son archivos xml o ini). * / / * Crear constantes para rutas muy utilizadas facilita mucho las cosas. ex. require_once (LIBRARY_PATH. "Paginator.php") * / defined ("LIBRARY_PATH") o define ("LIBRARY_PATH", realpath (dirname (__ FILE__). '/ library')); definido ("TEMPLATES_PATH") o define ("TEMPLATES_PATH", realpath (dirname (__ FILE__). '/ templates')); /* Error al reportar. * / ini_set ("error_reporting", "true"); error_reporting (E_ALL | E_STRCT); ?>
Este es un archivo de configuración básico de inserción. Una matriz multidimensional sirve como una estructura flexible para acceder a varios elementos de configuración, como las credenciales de la base de datos.
El uso de constantes para las rutas de uso común hace que las declaraciones incluyan (exigir
o incluir
) una brisa, y si la ruta cambia alguna vez, solo deberá actualizarla en un lugar.
Al usar diferentes archivos de configuración para múltiples entornos, puede tener configuraciones relevantes dependiendo del entorno actual. Es decir, si usa diferentes credenciales de base de datos o rutas diferentes para cada entorno, al configurar los archivos de configuración respectivos, se asegura de que su código funcionará sin problemas al actualizar su sitio en vivo. Esto también le permite tener diferentes configuraciones de informe de errores basadas en el entorno actual. ¡Nunca jamás muestres errores en tu sitio en vivo! La visualización de errores en el sitio en vivo podría exponer datos confidenciales a los usuarios (como contraseñas).
Las plantillas reutilizables son otro gran ahorro de tiempo. Hay algunas bibliotecas geniales para crear plantillas (como Smarty), y siempre recomiendo el uso de dicha biblioteca en lugar de reinventar la rueda. Estas bibliotecas ofrecen una gran cantidad de funciones (como métodos de ayuda para formatear la moneda y ofuscar las direcciones de correo electrónico). Como este es un sitio simple, no queremos tomarnos el tiempo de configurar la biblioteca y usaremos las plantillas básicas más básicas. Lo logramos al incluir secciones o módulos comunes en las páginas de nuestro sitio; De esta manera, si queremos cambiar algo en el encabezado, como agregar un enlace a la navegación global, se propaga en todo el sitio..
Sitio simple Sitio simple
- Casa
- Artículos
- portafolio
- PHP
- HTML
- CSS
Contenido de pie de página ...
Digamos que ponemos todos nuestros componentes de diseño (encabezado, pie de página, panel derecho) en nuestro directorio de recursos bajo plantillas.
Si bien este sistema de plantillas básicas le brinda un gran comienzo, puede llevarlo mucho más lejos. Por ejemplo, puede crear una clase o funciones que incluyan todos los archivos de plantilla y aceptar un archivo de contenido como un argumento para representar dentro del diseño. De esta manera, no necesita seguir incluyendo los archivos de plantilla en cada página de su sitio, sino abstraer esa lógica, lo que significa menos trabajo en el futuro. Te mostraré un ejemplo rápido.
0) foreach ($ variables as $ key => $ value) if (strlen ($ key)> 0) $ $ key = $ value; require_once (TEMPLATES_PATH. "/header.php"); eco "\ n "." \ t\ n "; require_once (TEMPLATES_PATH." /footer.php ");?>\ n "; if (file_exists ($ contentFileFullPath)) require_once ($ contentFileFullPath); else / * Si no se encuentra el archivo, el error se puede manejar de muchas maneras. En este caso, solo incluiremos un error template. * / require_once (TEMPLATES_PATH. "/error.php"); // close content div echo "\ t\ n "; require_once (TEMPLATES_PATH." /rightPanel.php "); // close container div echo"
Esto es asumiendo que tiene un archivo llamado home.php en su directorio de plantillas que actúa como una plantilla de contenido.
$ setInIndexDotPhp); renderLayoutWithContentFile ("home.php", $ variables); ?>
Página de inicio
Mayor separación de lógica y vista (php y html). La separación de las preocupaciones como esta hace que el código sea más limpio, y el trabajo del diseñador o desarrollador se vuelve más fácil, ya que en su mayoría trabajan con su código respectivo.
La encapsulación de la lógica de la plantilla en una función le permite realizar cambios en la forma en que la plantilla se procesa sin actualizarla en cada página de su sitio..
En los sistemas basados en Unix (os x, linux) hay una pequeña característica llamada symlinks (enlaces simbólicos). Los enlaces simbólicos son referencias a directorios o archivos reales en el sistema de archivos. Esto es realmente bueno para cuando tiene un recurso compartido, como una biblioteca utilizada entre varios proyectos. Aquí hay algunas cosas concretas que puedes hacer con los enlaces simbólicos:
Tenga dos versiones de su directorio de recursos. Al actualizar su servidor en vivo, puede cargar sus últimos archivos en un directorio arbitrario. Simplemente apunte el enlace simbólico a este nuevo directorio actualizando instantáneamente su base de código. Si algo sale mal, puede retroceder instantáneamente al directorio anterior (en funcionamiento).
Los recursos compartidos se gestionan fácilmente con enlaces simbólicos. Supongamos que tiene una biblioteca personalizada en la que ha estado trabajando, cualquier actualización de la biblioteca que realice en un proyecto estará disponible de inmediato en otro.
Los enlaces simbólicos, o enlaces blandos, actúan como referencias a rutas completas en el sistema de archivos. Puede usar enlaces simbólicos en múltiples ubicaciones y el sistema de archivos los trata como si fueran el archivo real o el directorio al que hacen referencia. Los enlaces duros, por otro lado, son punteros a un archivo en el disco (piense en los accesos directos en Windows); Te llevan a la ubicación real del archivo..
Hay algunas cosas que debe considerar al usar enlaces simbólicos. La configuración de su servidor debe estar configurada para seguir los enlaces simbólicos. Para Apache esto se hace en el archivo httpd.conf. Busque el bloque de directorio y asegúrese de que haya opciones FollowSymLinks. Si no es así, agrégalo y luego reinicia Apache..
Opciones FollowSymLinks AllowOverride None
Hay 2 formas de crear enlaces simbólicos en OS X:
A través de la línea de comando, navegue (cd, cambiar directorio) al directorio en el que desea que se cree el enlace simbólico, luego use el siguiente comando:
$: ln -s / ruta / a / actual / dir targetDir
Así que si nuestra biblioteca personalizada vive en ~ / Sitios / bibliotecas / myCustomLibrary
Nos gustaría cd a donde queremos usar esa biblioteca cd ~ / Sites / mySite / resources / library
y escribe:
$: ln -s ~ / Sitios / bibliotecas / myCustomLibrary myCustomLibrary
Tenga en cuenta que este método debería funcionar en todos los sistemas operativos basados en Unix.
La alternativa es a través del buscador. Al mantener presionado alt + cmd mientras hace clic y arrastra un archivo, se crea un enlace simbólico (o alias en os x) que apunta al archivo.
Para lograr esto en Windows, deberá usar el comando mklink en el símbolo del sistema:
C: \ mklink / D C: \ library \ myCustomLibrary C: \ Users \ derek \ Sites \ mySite \ resources \ library \ myCustomLibrary
Estos consejos están destinados a los principiantes o aquellos que crean sitios o aplicaciones simples. Idealmente para aplicaciones o sitios más grandes, querrá considerar algo más avanzado como la arquitectura MVC y la programación orientada a objetos. Le animo a mirar estos una vez que se haya mojado los pies y sienta que ha superado la mayoría de los pasos anteriores. Decidí no cubrir el control de la fuente ya que es un tema bastante grande por sí solo, pero estos consejos le ayudarán a organizar sus archivos para facilitar el control de la fuente si lo desea (sugerencia: almacene elementos como imágenes de diseño en su directorio de recursos y haga un enlace simbólico en su / public_html / img
dir). Definitivamente busque el control de código fuente, como subversion o git para todos sus proyectos.
Espero que estos consejos le sean útiles cuando comience su próximo proyecto PHP. Gracias!