2010-07-22 12 views
15

Estoy escribiendo mi primera aplicación PHP. Todo el mundo habla de tener un bootstrap.php para inicializar su aplicación. Esto tiene sentido y he creado uno con el que estoy contento. Hay dos cosas que no entiendo y que nadie parece mencionar:PHP Bootstrapping Basics

  1. ¿Dónde puedo llamar a mi boostrap de? ¿Lo incluyo en cada página? Por favor, dime que hay una mejor manera ...

  2. ¿Cómo hago para que no se llame a mi bootstrap más seguido de lo necesario? Supongo que solo debe llamarse al inicio de la aplicación o al inicio de una nueva sesión.

Respuesta

13

1: Generalmente el bootstrap está en el directorio "application". Se llama desde el directorio "público" que está en el mismo nivel que la aplicación (no dentro de él). El index.php dentro de la carpeta pública debe incluir el bootstrap.php y ahí es donde su Document_Root debe establecerse (tenga en cuenta que puede necesitar cambiar/agregar algunas rutas include para que funcione)

2: Sólo debería se incluirá una vez a través del archivo index.php en la carpeta pública. Solo incluirlo debería ser suficiente, si se hizo correctamente.

Espero que ayude.

+4

En otras palabras: hay dos directorios uno al lado del otro: 'application' (para las fuentes de la aplicación, inaccesible desde la red) y' public' (para el área pública, visible desde la red y configurado como 'DocumentRoot' en Apache). En 'public' hay' index.php', que es el front-end que muestra el servidor, e incluye 'application/bootstrap.php' al que solo se puede acceder desde scripts PHP, no desde la red, y carga la aplicación . Esta es la primera secuencia de comandos de la aplicación llamada, pero en el contexto de 'public/index.php'. – SasQ

+1

_... que es el front-end que muestra el servidor, e incluye_ ** '../ application/bootstrap.php' ** _que solo es accesible desde scripts PHP ..._ – DanFromGermany

1

depende de lo que haga su archivo de arranque. Si solo se trata de un archivo que establece algunas configuraciones ini y tal para crear un entorno de ejecución en buen estado y establecer una conexión de base de datos, entonces simplemente incluirlo con require_once en sus scripts debería ser suficiente. Si se trata más de un punto de entrada único, puede configurar su servidor para filtrar todas las solicitudes y enviarlo a los scripts de controlador apropiados.

5

Eche un vistazo a singleton pattern. Usted puede duplicar su clase de arranque como un contenedor de recursos, por ejemplo .:

$bootstrap = Bootstrap::getInstance(); 
$dbConn = $bootstrap->getPdoDbh(); 

Puede include o require el archivo, o utilizar el cargador automático y asegúrese de que tiene una llamada a una instancia del objeto en todas sus páginas. Incluso puede tener una llamada al getInstance() en la parte inferior del archivo, después de la definición de la clase.

O puede utilizar el enrutamiento basado en URL y hacer que todas sus solicitudes pasen por un único archivo index.php, como lo hace Zend Framework. O mejor aún, use Zend Framework.

Esta respuesta asume que estás haciendo OOP con PHP> = 5, que realmente es el camino a seguir.

8

Depende de la arquitectura de su aplicación.

Si su arquitectura es la buena y antigua "bandada de scripts php" - scripts PHP llamados directamente desde el navegador - entonces lo incluirá en la parte superior de cada script, de una forma u otra.

La mayoría de los desarrolladores (y frameworks) en estos días manejan todas sus solicitudes a través de /index.php de una forma u otra, usualmente con alguna reescritura de URL para hacer lindas y bonitas URL para que los usuarios vean.

En esta época, probablemente debería estar haciendo esto último, o al menos pensando en ello. Lleva a una mejor organización y, lo que es más importante, le permite mantener todo el código fuera de la raíz del documento del servidor web, lo cual es una buena práctica de seguridad por varias razones que están fuera del alcance de esta respuesta.