Démarrage rapide
PHP Manual
PHP Manual»Exemples»Démarrage rapide

Exemple #1 Une arborescence d'application classique

- .htaccess           // Règles de réécriture
+ public/
  | - index.php       // Point d'entrée de l'application
  | + css/
  | + js/
  | + img/
+ conf/
  | - application.ini // Configuration de l'application
- application/
  - Bootstrap.php     // Amorçage
  + controllers/
     - Index.php      // Contrôleur par défaut
  + views/
     |+ index/
        - index.phtml // Modèle de vue pour l'action par défaut
  + library/          // Bibliothèques
  + models/           // Modèles
  + plugins/          // Plugins

Il faut définir le DocumentRoot du serveur web sur le répertoire public, de sorte que seules les ressources publiques soient accessibles depuis le web.

Exemple #2 Une arborescence d'application multi-modules

+ public/
+ conf/
+ application/
  + modules/
    + Index/       //module par défaut
      + controllers/
      + views/
    + Admin/       //un autre module
      + controllers/
      + views/
  + library/
  + models/
  + plugins/
  - Bootstrap.php

Dans une application multi-modules, chaque module possède ses propres répertoires controllers et views sous application/modules/<NomDuModule>/. Les modules enregistrés sont déclarés dans application.modules.

Exemple #3 Point d'entrée

Le fichier index.php situé dans le répertoire public est le seul point d'entrée de l'application ; il faut y réécrire toutes les requêtes (il est possible d'utiliser un fichier .htaccess avec Apache + mod_php, ou l'équivalent pour le serveur web utilisé, voir ci-dessous).

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

$app  = new Yaf_Application(APPLICATION_PATH . "/conf/application.ini");
$app->bootstrap() //appelle les méthodes d'amorçage définies dans Bootstrap.php
 ->run();
?>

Exemple #4 Règle de réécriture

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

#pour 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;
  }
}

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

Exemple #5 Amorçage

Toute méthode de la classe Bootstrap dont le nom commence par _init est automatiquement appelée, dans l'ordre de définition, par Yaf_Application::bootstrap(). Chacune de ces méthodes reçoit l'instance de Yaf_Dispatcher en argument. Les méthodes portant un autre nom ne sont pas appelées automatiquement.

<?php
class Bootstrap extends Yaf_Bootstrap_Abstract
{
    public function _initConfig(Yaf_Dispatcher $dispatcher)
    {
        // appelée en premier
    }

    public function _initPlugin(Yaf_Dispatcher $dispatcher)
    {
        // appelée en deuxième
    }

    public function _initRoute(Yaf_Dispatcher $dispatcher)
    {
        // appelée en troisième
    }
}
?>

Exemple #6 Configuration de l'application

application.ini est le fichier de configuration de l'application. Les constantes définies dans index.php peuvent y être utilisées, et les sections peuvent hériter les unes des autres.

[yaf]
;APPLICATION_PATH est la constante définie dans index.php
application.directory=APPLICATION_PATH "/application/"

;la section product hérite de la section yaf
[product:yaf]
foo=bar

Exemple #7 Configuration de l'application sous forme de tableau PHP

Outre un fichier de configuration INI, il est également possible de passer un simple tableau PHP à Yaf_Application::__construct() en guise de configuration.

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

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

Exemple #8 Contrôleur par défaut

Dans Yaf, le contrôleur par défaut se nomme IndexController :

<?php
class IndexController extends Yaf_Controller_Abstract
{
    // nom de l'action par défaut
    public function indexAction()
    {
        $this->getView()->content = "Hello World";
    }
}
?>

Exemple #9 Modèle de vue par défaut

Le script de vue du contrôleur/action par défaut est application/views/index/index.phtml. Yaf fournit un petit moteur de vue nommé Yaf_View_Simple, dont les modèles sont de simples scripts PHP.

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

Exemple #10 Exécution de l'application

En pointant le navigateur sur le domaine configuré (par exemple http://www.example.com), la réponse ressemblera à :

Résultat de l'exemple ci-dessus est similaire à :

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

Note:

L'exemple minimal ci-dessus peut également être généré avec le générateur de code de Yaf (tools/cg/yaf_cg), livré avec le » dépôt source de Yaf :

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

yaf_cg génère un squelette plus complet et commenté que celui présenté dans ce tutoriel : un point d'entrée public/ avec ses règles de réécriture, un Bootstrap avec la configuration, la mise en place des plugins et des routes personnalisées, un modèle d'exemple, un contrôleur d'erreur et des modèles de vue. C'est un bon point de départ pour une véritable application.

To Top