Pour installer sohoa il a rien de plus simple avec composer il vous suffit d'executer la commande suivante
composer create-project -s dev sohoa/sohoa myProject
Nous avons adoptez l'architecture de fichiers suivante
- Application
- Controller
- Config (Ce dossier contient les fichiers propres à votre application (Route , Environnement , …)
- Model
- View
- …
- Public
- Css
- …
Nous allons faire pointer notre nom de domaine http://foo.hoa par exemple vers le dossier Public au moyen d'un vhost
<VirtualHost *:80>
ServerName foo.hoa
DocumentRoot "/path/to/my/sohoa/app/Public"
<Directory "/path/to/my/sohoa/app/Public">
Options All
AllowOverride All
</Directory>
</VirtualHost>
Greut (Le système de vue par Yoan Blanc)
Pour utiliser le système de vue il faut le déclarer dans notre fichier Public/index.php avec ainsi :
$framework = new /Sohoa/Framework/Framework();
$framework->view = new /Sohoa/Framework/View/Greut();
$framework->run();
et dans le controller Application/Controller/Main.php
public function IndexAction(){
$this->greut->render(); // Cette action va automatiquement allez chercher la vue ./Application/View/Main/Index.tpl.php
}
la méthode render() peut prendre deux types de données en paramètre
$this->greut->render(array('myControllerName' , 'myActionName')); // ./Application/View/myControllerName/myActionName.tpl.php
ainsi que
$this->greut->render('/an/path/to/the/view.tpl.php');
Nous avons un mécanisme assez simple pour la gestion des données variables dans Greut ainsi dans le controlleur si l'on définie la variable
$this->data->foo = 'bar';
Nous pourrons y acceder dans la vue associée via
echo $foo; // qui retournera bar
Les kits sont des classes qui apporte un lot de fontion génériques a une classe données exemple la gestion des redirections etc …, mais cela peut être pour des données métiers exemple : la gestion des authorisations d'accès etc …
Les helpers sont des fonctions regroupées autour d'un thème (catégorie) communes pour permettre d'ajouter des usages/fonctionnalités au système de vue Greut, ainsi on peut avoir le helper suivant dans le fichier ./Application/View/Main/Index.tpl.php :
$this->router->unroute('root'); // va générer "/"
$this->html->a('root' , [] , 'foo' , 'bar') // Pourrait générer <a href="/" class="foo">bar</a>
Un services est une classe php classique que l'on instancie et que l'on rend disponnible à l'ensemble de notre application on reproduit le principe du Design Pattern singleton
Nous utilisons des tests unitaires fait avec atoum et les executons avec
php vendor/bin/atoum -d Tests/Unit/Classes/
Nous utilisons également travis pour gerer la compatibilité avec toutes les verions php (5.3 5.4 5.5) et aider a la refactorisation et la gestion des PR.
Nous utilisons avec sohoa/sohoa des tests fonctionnels