web:php:chap7

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
web:php:chap7 [2023/11/08 15:23] – supprimée - modification externe (Unknown date) 127.0.0.1web:php:chap7 [2023/11/08 15:23] (Version actuelle) – ↷ Page déplacée de php:chap7 à web:php:chap7 jcheron
Ligne 1: Ligne 1:
 +====== Chapitre 7 : Notion de Framework PHP ======
  
 +**Framework = cadriciel**
 +
 +Ensemble de conposants logiciels fournissant un cadre de conception
 +
 +**Quelques frameworks connus :**
 +
 +CodeIgniter, Symfony, Laravel, Phalcon, Cake PHP, Zend, Yii
 +
 +
 +Les frameworks permettent d'intégrer facilement certains concepts ou fonctionnalités dans une application :
 +
 +
 +===== Architecture MVC =====
 +
 +MVC est un patron de conception (design pattern) permettant de séparer les différentes composantes d'une application suivant leur rôle :
 +
 +  * M = Modèle (logique et classes métier)
 +  * V = Vue (Partie présentation, interface utilisateur)
 +  * C = Contrôleur (Logique applicative, contrôle, synchronisation)
 +
 +{{:php-rt:cours:mvc.png?900|}}
 +
 +===== Routage, logique applicative =====
 +
 +voir https://micro-framework.readthedocs.io/en/latest/controller/uri.html
 +===== Mappage objet/relationel =====
 +
 +voir https://micro-framework.readthedocs.io/en/latest/model/models.html
 +
 +===== Vues =====
 +
 +  * Rôle d'affichage uniquement, reçoivent les données du contrôleur
 +  * Utilisation de moteur de template (cache)
 +
 +<sxh html;title:Exemple de vue>
 +<table class='table table-striped'>
 + <thead><tr><th colspan='3'>{{model}}</th></tr></thead>
 + <tbody>
 + {% for object in objects %}
 + <tr>
 + <td>{{object.toString()|raw}}</td>
 + <td class='td-center'><a class='btn btn-primary btn-xs' href='{{baseHref~"/frm/"~object.getId()}}'>...</a></td>
 + <td class='td-center'><a class='btn btn-warning btn-xs' href='{{baseHref~"/delete/"~object.getId()}}'>X</a></td>
 + </tr>
 + {% endfor %}
 + </tbody>
 +</table>
 +<a class='btn btn-primary' href='{{config["siteUrl"]~baseHref~"/frm"}}'>Ajouter...</a>
 +</sxh>
 +
 +===== Scripts côté client =====
 +
 +  * Généré en PHP
 +  * Dans les contrôleurs, puis insérés dans la vue
 +<sxh php;title:Exemple de script js généré dans le contrôleur>
 + public function index() {
 + $this->loadView("main/vHeader.html",array("infoUser"=>Auth::getInfoUser()));
 + $this->loadView("main/vDefault.html");
 + $this->loadView("main/vFooter.html");
 + Jquery::getOn("click", ".btAjax", "Sample/ajaxSample","#response");
 + echo Jquery::compile();
 + }
 +</sxh>