30,997
edits
No edit summary |
|||
| Line 18: | Line 18: | ||
=== Thèmes abordés === | === Thèmes abordés === | ||
Les thèmes abordés seront les suivants: | Les thèmes abordés seront les suivants: | ||
* Thème 1: | * Thème 1: Documentation technique | ||
* Thème 2: | * Thème 2: Accès aux données (DAO) | ||
* Thème 3: | * Thème 3: Design pattern MVC et moteur de templates | ||
* Thème 4: | * Thème 4: Performances | ||
* Thème 5: | * Thème 5: Traduction | ||
* Thème 6: | * Thème 6: Portabilité | ||
* Thème 7: | * Thème 7: Sécurité | ||
* Thème 8 | * Thème 8: Tests unitaires/non régression | ||
== Choix de l'exemple == | == Choix de l'exemple == | ||
| Line 37: | Line 36: | ||
Background du développement de l'application. | Background du développement de l'application. | ||
== Thème 1: Bonnes pratiques PHP Documentation == | |||
* Pourquoi | |||
-> Faciliter la maintenance et développement | |||
* Comment | |||
-> Tags et outils types Eclipse + Doxygen | |||
* Résultat | |||
-> Présentation de la documentation | |||
== Thème | == Thème 2: Bonnes pratiques PHP Design pattern DAO == | ||
* Pourquoi | * Pourquoi | ||
-> | -> Banaliser le développement et maintenance | ||
* Comment | * Comment | ||
-> | -> Présentation du générateur de DAO fait maison Dolibarr | ||
* Résultat | |||
-> Adhésion rapide au développement. | |||
-> | == Thème 3: Design pattern et moteur de templates (MVC by part versus MVC by file) == | ||
* Pourquoi | |||
- | -> Faciliter la lecture du code, maintenance | ||
* Comment | |||
- | -> Comparaison des Frameworks "MVC by file" (Smarty, ...) ou pratique Dolibarr "MVC by part" (controlleur et présentation séparés mais se suivant dans le même fichier) | ||
* Résultat | |||
Tableau comparatif | |||
{| class="wikitable" | |||
|Avantage/Inconvénient | |||
|Moteur template (Smarty, ...) | |||
|Template natif PHP (choix Dolibarr) | |||
|-------- | |||
|Garantie "technique" isolation code/présentation | |||
|oui | |||
|non | |||
|-------- | |||
|Maintenance | |||
|Plus simple | |||
| | |||
|-------- | |||
|Evolutivité | |||
|Plus fermé | |||
|Plus souple | |||
|-------- | |||
|Fonctionnalités | |||
| | |||
| | |||
|-------- | |||
|Performances | |||
|Moins bonne (attention aux annonces de "cache"). 120 | |||
|Base 100 | |||
|} | |||
* Résultat | * Résultat | ||
-> | -> Retour expérience sur Dolibarr: | ||
Résultat en terme de performance sur Dolibarr | |||
Résultat en terme de lisibilité | |||
Abandon de templates Smarty au profit de templates ... PHP | |||
-> Adhésion rapide au développement. | |||
== Thème | == Thème 4: Bonnes pratiques PHP Performances == | ||
=== Firebug / Google Page Speed === | === Firebug / Google Page Speed === | ||
* Pourquoi | * Pourquoi | ||
| Line 85: | Line 124: | ||
-> Bilan gain des modifications faites sur Dolibarr. | -> Bilan gain des modifications faites sur Dolibarr. | ||
== Thème | == Thème 5: Bonnes pratiques PHP Traduction == | ||
* Pourquoi | * Pourquoi | ||
-> Avoir un projet internationnalisé. | -> Avoir un projet internationnalisé. | ||
| Line 93: | Line 132: | ||
-> Résultat obtenus sur Dolibarr. | -> Résultat obtenus sur Dolibarr. | ||
== Thème | == Thème 6: Bonnes pratiques PHP Portabilité == | ||
PHP est déjà un langage portable. Mais certain sujets requiert malgré tout une couche de portabilité supplémentaire. | PHP est déjà un langage portable. Mais certain sujets requiert malgré tout une couche de portabilité supplémentaire. | ||
=== Base de données (iso/utf, mysql/postgresl/mssql) === | === Base de données (iso/utf, mysql/postgresl/mssql) === | ||
| Line 142: | Line 181: | ||
-> Résolution des problème dus aux cookies homonymes des paramètres. Un souci technique de moins. | -> Résolution des problème dus aux cookies homonymes des paramètres. Un souci technique de moins. | ||
== Thème | == Thème 7: Bonnes pratiques PHP Sécurité == | ||
* Pourquoi | * Pourquoi | ||
-> | -> Définition des dangers (Rappel du top 10 des dangers recensés par l'OWASP) | ||
* Comment | * Comment | ||
-> | -> Danger OWASP 1 -> Solution PHP -> Exemple dans Dolibarr ERP/CRM | ||
-> | |||
-> Danger OWASP 2 -> Solution PHP -> Exemple dans Dolibarr ERP/CRM | |||
-> | |||
-> | |||
-> | |||
-> Danger OWASP n -> Solution PHP -> Exemple dans Dolibarr ERP/CRM | |||
-> | |||
-> | |||
-> | |||
-> Danger OWASP 10 -> Solution PHP -> Exemple dans Dolibarr ERP/CRM | |||
-> | |||
-> | |||
* Résultat | * Résultat | ||
-> | -> Pas de retour à offrir. Mais quand on parle de sécurité, n'est-ce pas en soit un bon bilan ? | ||
== Thème | == Thème 8: Autres sujets et bonnes pratiques PHP non abordés == | ||
Liste des autres sujets non abordés car non mise en œuvre dans l'exemple | Liste des autres sujets non abordés car non mise en œuvre dans l'exemple | ||
* Génération de code (exemple ....) | * Génération de code (exemple ....) | ||