Inicio rápido
PHP Manual
PHP Manual»Ejemplos»Inicio rápido

Ejemplo #1 Estructura de directorios típica de una aplicación

- .htaccess           // Reglas de reescritura
+ public/
  | - index.php       // Punto de entrada de la aplicación
  | + css/
  | + js/
  | + img/
+ conf/
  | - application.ini // Configuración de la aplicación
- application/
  - Bootstrap.php     // Bootstrap
  + controllers/
     - Index.php      // Controlador por defecto
  + views/
     |+ index/
        - index.phtml // Plantilla de vista para la acción por defecto
  + library/          // Bibliotecas
  + models/           // Modelos
  + plugins/          // Plugins

Configure el DocumentRoot del servidor web apuntando al directorio public, de modo que solo los recursos públicos sean accesibles desde la web.

Ejemplo #2 Estructura de directorios para una aplicación multi-módulo

+ public/
+ conf/
+ application/
  + modules/
    + Index/       //módulo por defecto
      + controllers/
      + views/
    + Admin/       //otro módulo
      + controllers/
      + views/
  + library/
  + models/
  + plugins/
  - Bootstrap.php

En una aplicación multi-módulo, cada módulo tiene sus propios directorios controllers y views bajo application/modules/<NombreModulo>/. Los módulos registrados se declaran en application.modules.

Ejemplo #3 Punto de entrada

El fichero index.php del directorio public es el único punto de entrada de la aplicación; hay que redirigir todas las peticiones hacia él (se puede usar .htaccess en Apache + mod_php, o el equivalente en el servidor web utilizado; véase más abajo).

<?php
define("APPLICATION_PATH",  dirname(dirname(__FILE__)));

$app  = new Yaf_Application(APPLICATION_PATH . "/conf/application.ini");
$app->bootstrap() //llama a los métodos bootstrap definidos en Bootstrap.php
 ->run();
?>

Ejemplo #4 Regla de reescritura

#para apache (.htaccess)
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php

#para nginx
server {
  listen 80;
  server_name domain.com;
  root   document_root;
  index  index.php index.html index.htm;

  location / {
    try_files $uri $uri/ /index.php?$args;
  }
}

#para lighttpd
$HTTP["host"] =~ "(www.)?domain.com$" {
  url.rewrite = (
     "^/(.+)/?$"  => "/index.php/$1",
  )
}

Ejemplo #5 Bootstrap

Todo método de la clase Bootstrap cuyo nombre comience por _init es llamado automáticamente, en orden de definición, por Yaf_Application::bootstrap(). Cada uno de estos métodos recibe la instancia de Yaf_Dispatcher como argumento. Los métodos con otros nombres no se llaman automáticamente.

<?php
class Bootstrap extends Yaf_Bootstrap_Abstract
{
    public function _initConfig(Yaf_Dispatcher $dispatcher)
    {
        // llamado primero
    }

    public function _initPlugin(Yaf_Dispatcher $dispatcher)
    {
        // llamado segundo
    }

    public function _initRoute(Yaf_Dispatcher $dispatcher)
    {
        // llamado tercero
    }
}
?>

Ejemplo #6 Configuración de la aplicación

application.ini es el fichero de configuración de la aplicación. Se pueden usar en él las constantes definidas en index.php, y las secciones pueden heredar unas de otras.

[yaf]
;APPLICATION_PATH es la constante definida en index.php
application.directory=APPLICATION_PATH "/application/"

;la sección product hereda de la sección yaf
[product:yaf]
foo=bar

Ejemplo #7 Configuración de la aplicación como array PHP

Además de un fichero de configuración INI, también se puede pasar un array PHP simple a Yaf_Application::__construct() como configuración.

<?php
$config = array(
    "application" => array(
        "directory" => APPLICATION_PATH . "/application/",
    ),
);

$app = new Yaf_Application($config);
?>

Ejemplo #8 Controlador por omisión

En Yaf, el controlador por omisión se llama IndexController:

<?php
class IndexController extends Yaf_Controller_Abstract
{
    // nombre de acción por defecto
    public function indexAction()
    {
        $this->getView()->content = "Hello World";
    }
}
?>

Ejemplo #9 Plantilla de vista por omisión

El script de vista para el controlador/acción por omisión es application/views/index/index.phtml. Yaf incluye un pequeño motor de vistas llamado Yaf_View_Simple, cuyas plantillas son scripts PHP simples.

<html>
 <head>
   <title>Hello World</title>
 </head>
 <body>
   <?php echo $content;?>
 </body>
</html>

Ejemplo #10 Ejecutar la aplicación

Al apuntar el navegador al dominio configurado (p. ej. http://www.example.com), la respuesta será similar a:

Resultado del ejemplo anterior es similar a:

<html>
 <head>
   <title>Hello World</title>
 </head>
 <body>
   hello world
 </body>
</html>

Nota:

El ejemplo mínimo anterior también puede generarse con el generador de código de Yaf (tools/cg/yaf_cg), que se distribuye con el » repositorio fuente de Yaf:

$ cd tools/cg
$ ./yaf_cg -d output_directory [-a application_name] [--namespace]

yaf_cg genera un esqueleto más completo y comentado que el mostrado en este tutorial: un punto de entrada public/ con reglas de reescritura, un Bootstrap con configuración, plugin y configuración de rutas personalizadas, un modelo de ejemplo, un controlador de errores y plantillas de vista. Es un buen punto de partida para una aplicación real.

To Top