Hey
,
On reprend.
Hoa est composé de deux entités : framework et (data et application). Jusque là, ça se comprend assez bien. Le framework est capable d'exister une seule fois pour plusieurs applications. Chaque application est composé de deux entités/dossiers : les données et l'application elle-même.
Donc si on devait avoir une architecture, ce serait celle-ci :
$ hoa tree .
./
|-- Hoa/
| |-- Framework/
|-- Site1/
| |-- Application/
| |-- Data/
|-- Site2/
| |-- Application/
| |-- Data/
Hoa ne doit pas forcément être au même niveau que les sites Web. Sur mon serveur, je place Hoa dans /var/hoa et je fais les liens depuis mes applications avec le include_path. Peu importe, tu t'organises comme tu veux.
Ensuite, chaque site fonctionne comme tu le sais déjà. Tu vas ouvrir le fichier Site1/Data/Etc/Configuration/HoaCore.json et redéfinir les racines.
Ok, on va prendre un cas très concrès.
Je place Hoa/Framework/ dans /var/hoa/. Ainsi :
$ svn co http://svn.hoa-project.net/Framework/Trunk/Framework /var/hoa
$ hoa tree -d 1 /var/hoa
var/hoa/
|-- Core/
|-- Library/
|-- Module/
|-- Optional/
On a le contenu du dossier Framework dans /var/hoa. Simple.
On se place dans ~/Development/ et on va créer notre Site1 ok ?
$ cd ~/Development/
$ mkdir Site1
$ cd Site1
$ svn co http:/svn.hoa-project.net/Framework/Trunk/Data Data
$ hoa tree -d 2 .
./
|-- Data/
| |-- Bin/
| |-- Etc/
| |-- Lost+found/
| |-- Module/
| |-- Optional/
| |-- Temporary/
| |-- Variable/
Tu vois qu'on utilisait la ligne de commande hoa un peu partout, c'est à titre de démonstration. La ligne de commande est placée dans Data/Bin/, donc on va se faire nos propres commandes pour chacun de tes sites ok ? C'est parti :
$ pwd
~/Development/Site1/
$ cd Data/Bin/
$ sudo ln -s `pwd`/hoa /usr/bin/site1
Maintenant, on a la commande site1 qui existe, mais il faut faire une dernière modification. On va ouvrir Hoa.php situé dans ~/Development/Site1/Data/Bin/ (là où on est déjà normalement) pour changer le chemin d'inclusion. Ainsi, on aura :
ini_set('include_path', '/var/hoa/Core/' .
PATH_SEPARATOR .
get_include_path());
C'est bon, on a lié les données au framework, tout fonctionne bien. Il reste juste à configurer les racines pour le protocole hoa://. Là, ça va être un peu chiant. On va modifier 3 fichiers : Data/Etc/Configuration/HoaCore.json, son équivalent en cache et Data/Bin/Hoa.php (que l'on vient de modifier). Ok. C'est parti alors :
$ pwd
~/Development/Site1/
$ cd Data/Etc/Configuration/
$ vi HoaCore.json
// on fait ce qu'il faut pour avoir ceci :
"parameters": {
"root" : "/Users/jojolapine/Development/Site1",
"root.framework" : "/var/hoa",
"root.data" : "(:%root:)/Data",
"root.application" : "(:%root:)/Application",
$ vi .Cache/HoaCore.php
// on fait ce qu'il faut pour avoir ceci :
'parameters' =>
array (
'root' => '/Users/jojolapine/Development/Site1',
'root.framework' => '/var/hoa',
'root.data' => '(:%root:)/Data',
'root.application' => '(:%root:)/Application',
$ cd ../../Bin/
$ vi Hoa.php
// on fait ce qu'il faut pour avoir ceci :
Hoa_Core::getInstance()->setParameters(array(
'root' => '/Users/jojolapine/Development/Site1',
'root.framework' => '/var/hoa',
'root.data' => '(:%root:)/Data',
'root.application' => '(:%root:)/Application',
'protocol.Data/Bin' => '(:%protocol.Data:)' . 'Bin' . DS
));
Ok, alors testons !
C'est parti :
$ cd ~/Development/Site1 // pour dire qu'on est n'importe où
$ site1
// ça marche
$ site1 root
Framework's root: /var/hoa.
$ site1 root --data
Data's root: /Users/jojolapine/Development/Site1/Data.
$ site1 root --application
Application's root: /Users/jojolapine/Development/Site1/Application.
$ site1 configuration:view Hoa_Core
// on vérifie que les paramètres sont ceux qu'on voulait
On voit que tout fonctionne bien normalement
.
Maintenant, on va créer notre application :
$ pwd
~/Development/Site1/
// on se met où on veut, ça ne change rien, site1 travaillera dans cet espace de travail
$ site1 application:start -b index
$ site1 tree Application
Application/
|-- Controller/
|-- Model/
|-- Public/
| |-- index.php
|-- View/
| |-- HendTheme/
On va éditer notre fichier d'amorçage :
$ vi Application/Public/index.php
i<?php
ini_set('include_path', '/var/hoa/Core/' . PATH_SEPARATOR . get_include_path());
ini_set('date.timezone', 'Europe/Paris');
require_once 'Core.php';
import('Controller.Front');
Hoa_Core::getInstance()->setParameters(array(
'root' => '/Users/jojolapine/Development/Site1',
'root.framework' => '/var/hoa',
'root.data' => '(:%root:)/Data',
'root.application' => '(:%root:)/Application',
));
Hoa_Controller_Front::getInstance()->dispatch();<esc>:x
On continue en créant un contrôleur :
$ site1 controller:create index
et on va l'éditer de suite :
vi Application/Controller/Index.php
4Go<tab>public function IndexAction ( ) {
echo 'zoupla';
}<esc>:x
Enfin, on va créer notre vue principale pour que Hoa ne lance pas d'exception :
$ touch Application/View/HendTheme/Front.phtml
Enfin, on va pouvoir tester notre site !
$ php Application/Public/index.php
zoupla
Elle est pas belle la vie
?
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »