+ All Categories
Home > Documents > zend studio plateform

zend studio plateform

Date post: 17-Mar-2016
Category:
Upload: luc-dupont
View: 237 times
Download: 0 times
Share this document with a friend
Description:
document parlant de zend studio
Popular Tags:
227
Copyright © 2007, Zend Technologies Inc. Formation Zend Studio / Zend Platform, Standards de codage, migration PHP 5 & gestion de versions Arawak
Transcript
Page 1: zend studio plateform

Copyright © 2007, Zend Technologies Inc.

Formation Zend Studio / Zend Platform, Standards de codage, migration PHP 5 & gestion de versions

Arawak

Page 2: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 2

Programme

• Zend Studio• Zend Platform pour les développeurs• Standards de codage• La PHPDoc• Migration vers PHP 5• La gestion des versions avec Subversion

Page 3: zend studio plateform

Copyright © 2007, Zend Technologies Inc.

Zend Studio: Introduction

Page 4: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 4

Zend Studio: IntroductionFonctionnalités

Colorisation syntaxique

personnalisable

Mise en évidence des erreurs en

temps réel

Complétion de code PHP

Gestionnaire de fichiers

Client FTP

Inspecteurs

Page 5: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 5

Zend Studio: IntroductionIntégration de Internet Explorer

Barre d'outils de débogage

Cycle de débogage

complet depuis Zend Studio

Consultez le manuel PHP depuis

Zend Studio

Page 6: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 6

Zend Studio: IntroductionGabarits

Les gabarits vous permettent de travailler plus rapidement, avec moins de risque d'erreurs de frappe (menu Outils > Personnalisation)

Page 7: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 7

Zend Studio: IntroductionAssistant PHPDocumentorEn utilisant l'assistant PHPDocumentor, vous pouvez facilement générer la documentation API de votre application Ajouter des

fichiers

Ajouter des répertoires

Ajouter les fichiers qui ne doivent

pas être inclus

Page 8: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 8

Zend Studio: IntroductionAssistant PHPDocumentor

Page 9: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 9

Zend Studio: IntroductionAssistant PHPDocumentor

Page 10: zend studio plateform

Copyright © 2007, Zend Technologies Inc.

Zend Studio: Editeur

Page 11: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 11

Zend Studio: EditeurIntégration PHPDoc

• Les commentaires PHPDoc sont utilisés pour: Décrire comment l'élément est utilisé dans le code de

l'application Générer la documentation API du projet via

PHPDocumentor Générer des commentaires structurés pour la

complétion de code dans Zend Studio

Page 12: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 12

Zend Studio: EditeurIntégration PHPDoc

• En utilisant le droit clic dans l'inspecteur d'objets

• Par la complétion de code: tapez /** puis <ENTREE>

Page 13: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 13

Zend Studio: EditeurIntégration PHPDoc, exemple

Page 14: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 14

Zend Studio: EditeurComplétion de code

• Accès facile aux: Classes Fonctions Variables Constantes Mots-clés Balises HTML Attributs Valeurs d'attributsetc...

Page 15: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 15

Zend Studio: EditeurComplétion de code

• Complétion de code HTML

• Complétion de code PHP: Complétion de code pour les fonctions imbriquées Complétion de code pour les valeurs de retour d'une

fonction ou méthode (en utilisant PHPDoc)

Page 16: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 16

Zend Studio: EditeurComplétion de code

• Indice pour la complétion de code PHP: Ajoutez une balise @var comme indice au type de

classe En utilisant un commentaire, vous pouvez précisément

indiquer le type de classe d'une variable:

Page 17: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 17

Zend Studio: EditeurComplétion de codela classe ClasseDeComplétion Sans commentaires PHPDoc

Avec commentaires PHPDoc

Page 18: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 18

Zend Studio: EditeurSignets

Utilisez les signets dans le document actif pourmarquer des lignes de code (par clic droit sur la marge àhauteur de la ligne ou en appuyant sur la touche <F2>)

Cette fonctionnalité vous permet de naviguer plus rapidement dans le code en utilisant

la combinaison de touches <CTRL> + <F2> ou en cliquant sur les indicateurs de signet dans l'ascenseur de droite

En passant sur le signet avec la souris, on obtient la description

Signet

Signet Signet

Signet

Commentaire du signet

Page 19: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 19

Zend Studio: EditeurSignets

Gérez vos signets avec le gestionnaire de signets

Ajoutez des descriptions à vos signets

Page 20: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 20

Zend Studio: EditeurExercices

• Compléter la phpdoc de l'application que nous avons installé pour le cours Zend Studio.

• Repérer une fonction qui renvoit une classe dans le code fourni, compléter la phpdoc pour renseigner quel type de classe cette fonction renvoit.

• Générer la phpdoc dans un dossier "phpdoc" à la racine de l'application.

• Tester l'utilisation des signets.

Page 21: zend studio plateform

Copyright © 2007, Zend Technologies Inc.

Zend Studio : Travailler Avec Des Projets

Page 22: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 22

Travailler Avec des ProjetsCréer un nouveau projet

Création d'un nouveau projetL'assistant vous guide pour déterminer les propriétés de votre nouveau projet

Page 23: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 23

Travailler Avec des ProjetsUtilité de définir un projet

• Quelle est l'utilité de créer un projet ? Débogage Complétion de code Contrôle des versions des fichiers du projet Une seule arborescence pour tous les fichiers avec

lesquels vous devez travailler

Page 24: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 24

Travailler Avec des ProjetsAjouter des fichiers

Ajouter des fichiers à un projet

Page 25: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 25

Travailler Avec des ProjetsLes Inspecteurs

• Le panneau d'inspecteurs est utilisé pour mapper graphiquement des éléments de code

• Les éléments de code représentables sont: Noms de classes Propriétés de classes Constantes de classes Méthodes de classes Fonctions Constantes Fichiers "Include" Clients SOAP

Page 26: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 26

Travailler Avec des ProjetsLes Inspecteurs

• Il existe trois onglets d'inspecteurs: Onglet d'Inspecteur de fichiers: affiche

dans une arborescence tous les éléments de code représentables déclarés dans le fichier en cours d'édition

Onglet d'Inspecteur de projet: tous les éléments de code dans les fichiers du projet ou les fichiers ouverts dans l'editeur

Onglet PHP: toutes les classes et fonctions PHP – tapez F1 pour ouvrir le manuel PHP

Page 27: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 27

Travailler Avec des ProjetsExercices

• Créer un projet contenant l'application fournie. • Définir les propriétés du projet comme suit :

Encoding UTF-8 Débogueur interne

Page 28: zend studio plateform

Copyright © 2007, Zend Technologies Inc.

Zend Studio : Débogage

Page 29: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 29

Zend Studio: DébogageDébogueur interne• Débogueur interne

Zend Studio installe ses propres versions de PHP – 4 & 5, avec lesquels vous pouvez déboguer vos scripts

Le débogueur interne est une suite d'outils qui permettent au développeur de déboguer ses applications avant leur mise en ligne

Page 30: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 30

Zend Studio: DébogageExercice

• Changez la version PHP utilisé pour le débogage dans Outils > Préférences > Poste de travail

• Modifiez le fichier INI pour chaque version dans <répertoire d'installation de Studio>/bin/phpx

Page 31: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 31

Zend Studio: DébogageServeur de débogage

Zend Platform

Zend Platform Configuration:

Page 32: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 32

Zend Studio: DébogageServeur de débogage• Requièrt l'installation de Zend Platform sur le serveur Web• Vous permet de déboguer des scripts plus complexes, en

utilisant votre propre version de PHP et vos extensions, sur votre environnement Web

• Possibilité de déboguer des fichiers locaux ou ceux sur votre serveur

Page 33: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 33

Zend Studio DébogageConfiguration du débogueur

• Dans ZDE, ouvrez Outils > Personnalisation > Débogage. Sélectionnez le mode de débogage "Serveur" et renseignez l'adresse de votre serveur dans le champs "URL du Serveur de Débogage"

• Ajoutez l'adresse IP de votre machine dans la liste des hôtes autorisés depuis l'interface utilisateur de Zend Platform, ou éditez la directive zend_debugger.allow_hosts dans votre fichier php.ini

• Veillez à redémarrer votre serveur Web après avoir effectué ces changements

Vous pouvez également configurer ces paramètres pour chaque projet séparément en éditant les propriétés du projet: Projet > Propriétés du Projet

Page 34: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 34

Zend Studio DébogageDifférentes façons de déboguer• Débogage URL (F8)

Le retour du débogueur est rendu dans le navigateur et dans la fenêtre « Résultat du débogage » du client Zend Studio au fur et à mesure de l'avancement du débogage

Facilite le débogage de formulaires Vous permet de lancer le

débogage sur des pages situés sur le serveur Web

Page 35: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 35

Zend Studio DébogageDifférentes façons de déboguer• Bouton « Commencer le débogage » (F5)

Vous permet de déboguer des fichiers locaux dans l'environnement de votre serveur Web

Les chemins relatifs dans les scripts peuvent différer – assurez vous d'ajouter tous les fichiers nécessaires à un projet dans Zend Studio

Page 36: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 36

Zend Studio DébogageLa barre d'outils de débogage

• La barre d'outils de débogage peut être installée sous Internet Explorer et les navigateurs Mozilla (comme Firefox) Elle offre un accès facile et rapide aux fonctions de

débogage et de profilage depuis le navigateur Internet Puisqu'elle permet de lancer une session de débogage

depuis le navigateur, elle est particulièrement utile pour le débogage de formulaires – toutes les valeurs saisies seront disponibles lors du débogage

Page 37: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 37

Zend Studio DébogageProfilage• Synthétise les données générées par une application PHP• Représente les ressources pour chacun d'eux dans un

graphique

Page 38: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 38

Zend Studio DébogageProfilage, Informations du profileur• Fournit des informations générales sur:

La durée et la date du profilage

Le nombre de fichiers appelés par l'URL demandée

La répartition du temps pour les fichiers appelés

Page 39: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 39

Zend Studio DébogageProfilage, Fonctions statiques

Affiche la liste des fichiers appelés par l'URL

Affiche des informations détaillés concernant les fonctions et méthodes dans les fichiers (nombre d'appels, durée d'exécution totale, ...)

• Fournit des informations générales sur:

Page 40: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 40

Zend Studio DébogageProfilage, Trace d'appel• Affichage hiërarchique des fonctions selon leur ordre

d'exécution• Vous permet de:

Sauter à la fonction dans le code par double-clic

Voir l'appel à la fonction

Voir la déclaration de la fonction

Vérifier les détails de la fonction

• ...

Page 41: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 41

Zend Studio DébogageExercices

• Effectuer le profilage de l'application fournie à l'aide de Zend Studio et sa barre d'outils.

• Tester les options de débogage à partir de la barre d'outil Zend Studio.

Page 42: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 42

Zend Studio: Fonctionnalités SupplémentairesNavigateur SQL

Affichez les résultats d'une

requête

Connectez vous sur plusieurs

serveurs de bases de données

simultanément

Consultez le schéma, les

tables et colonnes de la

base de données

Consultez les utilisateurs de

la base de données

Exécutez des requêtes

Passez facilement d'un serveur, base de

données ou schéma à un

autre

Page 43: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 43

Zend Studio: Fonctionnalités SupplémentairesGénérateur WSDLLe générateur de fichiers WSDL vous permet de créer facilement un service Web pour votre application (Menu Outils > Générateur WSDL)

Page 44: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 44

Zend Studio: Fonctionnalités SupplémentairesVersionnage• Le versionnage est supporté pour deux logiciels de

contrôle de version: CVS -

http://www.nongnu.org/cvs/ Subversion -

http://subversion.tigris.org/ CVS et Subversion sont

interchangeables et sont définis dans le menu de personnalisation: Outils > Personnalisation > Versionnage

Vous devez avoir défini un projet avant de pouvoir vous servir des fonctionnalités de versionnage de Zend Studio

Page 45: zend studio plateform

Copyright © 2007, Zend Technologies Inc.

Zend Platform pour les développeurs

Page 46: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 46

Zend Platform pour les développeursIntroduction: Architecture

Page 47: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 47

Zend Platform pour les développeursModule Performance• Il existe différents niveaux pour gagner en performance

Accélération de code Optimisation de code Caching du contenu (page complète ou partielle) Zend Download Server Compression du rendu

• Le but est de réduire la charge serveur et d'améliorer les temps de réponse

• Le module Performance inclut des outils de benchmarking

Page 48: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 48

Zend Platform pour les développeursModule Performance, Console

• Information serveur

• Dernières informations de benchmark

• Résumé des paramètres et statut de chaque composant

• Liens rapides

Page 49: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 49

Zend Platform pour les développeursModule Performance, Testing• L'onglet Testing vous donne accès à des tests de

benchmarking: Tester des

téléchargements Tester une URL Tester un site

Page 50: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 50

Zend Platform pour les développeursModule Session Clustering• Le problème

Le protocole HTTP n'a pas d'état Les sessions sont le standard de facto pour stocker des données

par utilisateur pour une durée limitée Les données des sessions sont typiquement stockées dans des

fichiers ou une base de données PHP vous permet d'écrire facilement des « handler » pour stocker

des données de sessions dans tout support accessible par PHP Usage typique des sessions: un panier d'achats

Comment synchroniserles sessions ?

Page 51: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 51

Zend Platform pour les développeursModule Session Clustering• La solution: Zend Session Clustering

Les sessions résident sur le serveur où elles étaient créées Chaque session peut être lue par tout autre serveur du cluster Un système de vérouillage et d'intégrité de données plus

performant Différentes façons de stocker les données: en fichier ou en

mémoire

Page 52: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 52

Zend Platform pour les développeursModule Session Clustering, Statistics

• L'onglet Cluster Statistics du module Session Clustering vous donne des informations sur les sessions sur le cluster

Page 53: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 53

Zend Platform pour les développeursModule Java Bridge• Intégrez vos librairies et classes Java avec PHP sans

heurts• Augmentez le retour sur investissement de vos

applications Java existantes tout en bénéficiant de PHP pour vos applications Web

• Délivrez une solution prenant le meilleur de deux mondes

Page 54: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 54

Zend Platform pour les développeursModule Java Bridge: exemple

• Exemple de communication avec une application Java

Page 55: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 55

Zend Platform pour les développeursModule PHP Intelligence• PHP Intelligence est basé sur des incidents d'exécution

PHP se produisant sur le serveur Web, détectés par Zend Platform Exécution lente de scripts (absolu / relatif) Erreurs PHP Erreurs de fonctions (ex: division par zéro) Fonction lente Exécution de requêtes SQL lentes Charge moyenne sur le(s) serveur(s) Utilisation mémoire excessive (absolu / relatif) Erreur de base de données Inconsistences de rendus – un client ne voit pas la même chose

qu'un autre pour la même demande Evènements personnalisés

Page 56: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 56

Zend Platform pour les développeurs

Module PHP Intelligence, System Health

• Une vue immédiate sur la « santé » de vos serveurs

Page 57: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 57

Zend Platform pour les développeursModule PHP Intelligence, Event list

• Une vue de la liste des évènements

Page 58: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 58

Zend Platform pour les développeursModule PHP Intelligence, Event details

Informatons sur le script PHP

générant l'évènement

Intégration avec Zend

Studio

Données contextuelles

à l'évènement

Afficher le code source

du script

Page 59: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 59

Zend Platform pour les développeursPHP Intelligence, Intégration Zend Studio

Tester l'URL: ouvre le navigateur Internet avec

toutes les données contextuelles de l'évènement

Ouvre une session de débogage dans Zend Studio avec toutes les

données contextuelles de l'évènement chargées

Lance une session de profilage dans Zend Studio

comprenant toutes les données contextuelles de

l'évènement

Ouvre le code source du script dans Zend Studio

Page 60: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 60

Zend Platform pour les développeursModule PHP Intelligence, Event triggers

• Définir les évènements capturés

Page 61: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 61

Zend Platform pour les développeursModule PHP Intelligence, Graphs

• Statistiques d'évènements par serveur

Page 62: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 62

Zend Platform pour les développeursAPI Zend Platform

• Zend Platform possède une API permettant : D'utiliser les fonctionnalités de cache dans son application

(cache partiel) D'activer ou désactiver l'accélérateur De gérer le monitoring et envoyer des événements personnalisés D'envoyer des fichiers binaires en utilisant le Zend Download

Server

• Une documentation complète est fournie dans le guide de l'utilisateur de la Zend Platform, ainsi qu'un tutorial pour l'utilisation du caching partiel.

Page 63: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 63

Zend Platform pour les développeursAPI Zend Platform

• Exemple de mise en cache partiel d'une d'une fonction (getProductList est mis en cache, mais pas le header et le footer de la page).

Page 64: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 64

Zend Platform pour les développeursExercices

• Créer un utilisateur portant votre pseudonyme, se logguer avec cet utilisateur et parcourir les écrans des slides précédents.

• Télécharger le guide de l'utilisateur de la zend platform et l'ouvrir au chapitre consacré à l'API.

• Créer un fichier "Cache.php" et implémenter une classe "Cache" avec des méthodes "get", "set" et "clean" qui respectivement rappatrient, émettent une valeur dans le cache et vide le cache.

• Utiliser cette classe dans un fichier test en mettant en oeuvre un jeu de test qui vérifie si ces trois méthodes fonctionnent.

Zend Platform pour les développeursZend Platform pour les développeurs

pour ces deux derniers points, vous pouvez utiliser les fonctions qui vous semblent les plus appropriées

Page 65: zend studio plateform

Copyright © 2007, Zend Technologies Inc.

Standards de codage

Page 66: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 66

Standards de codage

Nous nous baserons sur les standards du framework Zend pour cette formation. Ces standards ont l'avantage d'être très complets et cohérents.

• Pratiques et procédures courantes• Conventions de nommage et de formattage• Fonctionnalités recommandées• Bonnes pratiques

Page 67: zend studio plateform

Copyright © 2007, Zend Technologies Inc.

Conventions : généralités

Page 68: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 68

Conventions : généralitésPratiques des entreprises

• PHP est une plateforme souple et simple à utiliser. Pour faire un travail professionnel et productif, il est NECESSAIRE d'avoir des conventions solides, complètes et fiables.

• La plupart des problèmes de pérénité et de productivité sont liés aux non respect des conventions et des architectures définies, ou tout simplement parce que ces considérations n'ont pas assez été abordées.

Page 69: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 69

Conventions : généralitésPratiques des entreprises

• Certaines entreprises ont leurs propres conventions, d'autres utilisent les conventions officielles (PEAR, Zend Framework). La deuxième solution s'avère plus efficace.

Page 70: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 70

Conventions : généralitésScope des conventions

• Les conventions de codage doivent couvrir La syntaxe de codage (tabulations, espaces,

nommage, sauts de ligne, etc.) L'organisation des fichiers (nommage, hiérarchie,

organisation, dossiers et fichiers obligatoires, etc.) L'architecture sur laquelle repose tout développement

(mvc, méthodes de construction d'une librairie, interfaces à implémenter, etc.)

Page 71: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 71

Conventions : généralitésScope des conventions

• Les conventions de codage doivent couvrir (suite) L'utilisation des outils, notamment le gestionnaire de

versions (messages des commits, nommage des tags et des branches, etc.) et le bugtracker

La stratégie de qualité (écriture et passage des tests) La méthode de développement (méthode agile, XP, ...)

Page 72: zend studio plateform

Copyright © 2007, Zend Technologies Inc.

Formatage des fichiers

Page 73: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 73

Formattage des fichiersGénéral

• Pour les fichiers contenant uniquement du code PHP, le tag de fermeture ("?>") n'est jamais permis. Il n'est pas requis pas PHP. Ne pas l'inclure permet de prévenir les problèmes liés à

l'injection accidentelle d'espaces blancs dans la sortie.• IMPORTANT: L'inclusion de données binaires

arbitraires comme il est permis par __HALT_COMPILER() est très déconseillé. L'utilisation de cette possibilité devrait uniquement être permise pour des scripts spéciaux d'installation.

Page 74: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 74

Formattage des fichiersIndentation, longueur de ligne

• Utiliser une indentation de 4 espaces, sans tabulations.

• La longueur souhaitée d'une ligne est de 80 caractères. i.e les développeurs devraient avoir pour but de ne pas

dépasser les 80 caractères pour des raisons pratiques. Cependant, des lignes plus longues sont acceptables. La longueur maximum de toute ligne de code PHP est

de 120 caractères.

Page 75: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 75

Formattage des fichiersTerminaison de lignes

• La terminaison de ligne est la terminaison standard pour les fichier textes UNIX. Les lignes doit finir seulement avec un "linefeed" (LF). Les linefeeds sont représentés comme 10 en ordinal, ou 0x0A en hexadecimal.

• Ne pas utiliser de retour chariot (CR) comme les font les Macintosh (0x0D)

• Ne pas utiliser de combinaison retour chariot/linefeed (CRLF) comme le font les ordinateurs sous Windows (0x0D, 0x0A).

Page 76: zend studio plateform

Copyright © 2007, Zend Technologies Inc.

Conventions de nommage

Page 77: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 77

Conventions de nommageClasses

• Le Framework Zend emploie une convention de nommage des classes où les noms des classes mènent directement dans le(s) répertoire(s) dans lesquels elle sont stockées.

• Le répertoire racine du Framework Zend est le répertoire "Zend", dans lequel toutes les classes sont stockées de façon hiérarchique.

Page 78: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 78

Conventions de nommageClasses

• Les noms de classes Ne peuvent contenir que des caractères

alphanumérique. Les tirets bas ("_") ne sont autorisés que pour être utilisés

comme séparateur de chemin -- le nom "Zend/Db/Table.php" doit mener à la classe appelée "Zend_Db_Table".

Les nombres sont autorisés, mais déconseillés.

Page 79: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 79

Conventions de nommageClasses

• Les noms de classes Si un nom de classe comprend plus d'un mot, la

première lettre de chaque nouveau mot doit être mis en majuscule.

La mise en majuscule successive de lettre n'est pas autorisée, i.e une class "Zend_PDF" est interdit alors que "Zend_Pdf" est autorisé.

Page 80: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 80

Conventions de nommageClasses

• Remarque Zend Framework Le code qui opère avec le Framework mais qui n'en fait

par partie, i.e le code écrit par un utilisateur et pas Zend ou une des entreprises partenaires, ne doivent jamais commencer par "Zend_".

Page 81: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 81

Conventions de nommageClasses

• Voici 3 exemples de noms de classes autorisés :

Zend_DbZend_ViewZend_View_Helper

Page 82: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 82

Conventions de nommageInterfaces

• Les interfaces doivent suivre les mêmes conventions que les autres classes (cf slide précédent),

• cependant elles doivent finir par le mot "Interface" comme le montre les exemples du slide suivant.

Page 83: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 83

Conventions de nommageInterfaces

• Nommage des interfaces

Zend_Log_Adapter_InterfaceZend_Controller_Dispatcher_Interface

Page 84: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 84

Conventions de nommageNoms de fichier

• Pour tous les autres fichiers, seuls des caractères alphanumérique, tirets bas et tiret demi-cadratin ("-") sont autorisés.

• Les espaces et les caractères spéciaux sont interdits.

• Tout fichier contenant du code PHP doit se terminer par l'extension ".php"

• Les exemples suivants montrent des noms de fichiers acceptables pour contenir les noms de classes issus des exemples précédents.

Page 85: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 85

Conventions de nommageNoms de fichier

• Exemples de noms de fichiers valides

Zend/Db.phpZend/Controller/Front.phpZend/View/Helper/FormRadio.php

Page 86: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 86

Conventions de nommagefonctions et méthodes

• Les noms de fonctions Ne peuvent contenir que des caractères

alphanumériques. Les tirets_bas ne sont pas permis. Les nombres sont autorisés mais déconseillés. Ils doivent toujours commencer avec une lettre en

minuscule. Quand un nom de fonction est composé de plus d'un

seul mot, la première lettre de chaque mot doit être en majuscule (méthode "studlyCaps" ou "camelCaps").

La clarté est conseillée. Le nom devrait être aussi explicite que possible, c'est un gage de compréhension du code.

Page 87: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 87

Conventions de nommagefonctions et méthodes

• Noms acceptables pour des fonctions

filterInput()getElementById()widgetFactory()

Page 88: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 88

Conventions de nommageVariables

• Les noms de variables Ne peuvent contenir que des caractères

alphanumériques. Les tirets bas ne sont pas permis. Les nombres sont autorisés mais déconseillés.

• Pour les variables membres de classe Qui sont déclarées comme "private" ou "protected", le

premier caractère du nom doit être un seul tiret bas. C'est le seul usage acceptable d'un tiret bas dans un nom de variable.

Les variables membres "public" ne devraient jamais commencer par un tiret bas.

Page 89: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 89

Conventions de nommageConstantes

• Les constantes Peuvent contenir des caractères alphanumérique et

des tirets bas, les nombres sont autorisés. Elles doivent toujours être en majuscule. Elles doivent toujours être définies comme des

membres d'une classe, en utilisant la construction "const".

• Définir des constantes globales avec "define" est permis mais déconseillé.

Page 90: zend studio plateform

Copyright © 2007, Zend Technologies Inc.

Style de codage

Page 91: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 91

Style de codageDémarcation du code PHP

• Les démarcations PHP doivent toujours être délimitées par la forme complète : (<?php ...).

• Les balises courtes d'ouverture ne sont pas autorisées.

Page 92: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 92

Style de codageChaînes de caractères

• Lorsqu'une chaîne est littérale (i.e elle ne contient pas de substitution de variables), le guillemet simple doit être utilisé pour démarquer la chaîne. $a = 'Example String';

• Lorsque qu'une chaîne litérale contient des apostrophes, il est permis de les démarquer en utilisant les guillemets doubles. $sql = "SELECT `id`, `name` from `people` WHERE

`name`='Fred' OR `name`='Susan'";

Page 93: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 93

Style de codageSubstitution de variables

• Elle est permise sous deux formes :

$greeting = "Bonjour $name, bienvenue!";$greeting = "Bonjour {$name}, bienvenue!";// Cette forme n'est pas permise (pour des raisons d'uniformité)$greeting = "Bonjour ${name}, bienvenue!";

Page 94: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 94

Style de codageConcaténation de chaînes

• Les chaînes peuvent êtres concaténées en utilisant l'opérateur ".". Un espace doit toujours être ajouté avant, et après cet opérateur, cela permet d'améliorer la lisibilité. $company = 'Zend' . 'Technologies';

• Lors de la concaténation de chaînes avec l'opérateur "." Il est permis de couper le segment en plusieurs lignes

pour améliorer la lisibilité. Dans ces cas, chaque nouvelle ligne doit être remplie

avec des espaces, de façon à aligner le "." sous l'opérateur "=".

Page 95: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 95

Style de codageConcaténation de chaînes

• Exemple de concaténation sur plusieurs lignes

$sql = "SELECT `id`, `name` FROM `people` WHERE `name` = 'Susan' ORDER BY `name` ASC ";

Page 96: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 96

Style de codageVerifier les chaînes

• Dans chaque fichier de l'application fournie Vérifier le format des chaînes de caractères. Mettre les concaténations à la norme. Faites en sorte que les lignes ne dépassent pas 80 caractères.

Ce sont souvent les chaînes qui dépassent en longueur les 80 caractères max. conseillés d'une ligne !

Page 97: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 97

Style de codageTableaux

• Tableaux indexés numériquement L'utilisation d'indices négatifs n'est pas permise. Un tableau indexé doit commencer avec n'importe

quel nombre positifs, cependant cette méthode est déconseillée.

Il est conseillé de commencer l'indexation à 0. Lors de la déclaration de tableaux indexés avec la

construction array, un espace doit être ajouté après chaque virgule délimitante, pour améliorer la lisibilité.

Ex : $sampleArray = array(1, 2, 3, 'Zend', 'Studio');

Page 98: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 98

Style de codageTableaux

• Tableaux indexés numériquement Il est aussi permis de déclarer des tableaux indexés sur

plusieurs lignes en utilisant la construction array. Dans ce cas, chaque nouvelle ligne doit être remplie par des espaces jusqu'à ce que cette ligne s'aligne (cf. slide suivant).

• Lors de la déclaration de tableaux associatifs avec la construction array Séparer la définition sur plusieurs lignes. Dans ce cas, chaque ligne successive doit être remplie

par des espaces pour que les clés et les valeurs soient alignées.

Page 99: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 99

Style de codageTableaux

• Exemple de déclaration de tableaux

$sampleArray = array(1, 2, 3, 'Zend', 'Studio', $a, $b, $c, 56.44, $d, 500);$sampleArray = array('firstKey' => 'firstValue', 'secondKey' => 'secondValue');

Page 100: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 100

Style de codageCheck des tableaux

• Dans l'application fournie Vérifier si les tableaux sont tous déclarés correctement. Mettre les déclarations et les lignes qui utilisent les tableaux à

la norme.

Ne pas oublier de déclarer votre tableau avant de l'utiliser !

Page 101: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 101

Style de codageDéclaration de classes

• Règles de déclaration L'accolade est toujours écrite dans la ligne sous le nom

de la classe (forme "one true brace"). Toutes les classes doivent avoir un bloc de

documentation conforme à PHPDocumentor. Tout code d'une classe doit être indenté avec 4

espaces. Une seule classe par fichier PHP. Le placement de code additionnel dans un fichier de

classe est permis, mais déconseillé. Dans ces fichier, deux lignes vides doivent séparer la classe du code PHP additionel.

Page 102: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 102

Style de codageDéclaration de classes

• Exemple de déclaration de classe

/** * Bloc de documentation */class SampleClass{ // contenu de la classe // qui doit être indenté avec 4 espaces}

Page 103: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 103

Style de codageCompléter les classes

• Compléter les classes existantes Par une documentation phpdoc utile. Essayer de mettre une exemple d'utilisation entre des balises

<code></code>.

Mettre aussi quelques tags phpdoc utiles : licence, auteur, version, paquetage, sous-paquetage, ...

Page 104: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 104

Style de codageVariables membres d'une classe

• Les variables membres (propriétés) Doivent être nommées en respectant les conventions

de nommage. Doivent être listée en haut de la classe, avant toute

déclaration de fonction.• La construction var (PHP4) n'est pas permise en

PHP5. Toujours mentionner la visibilité : private, protected, ou

public. L'accès direct aux variables membres publiques est

permis mais déconseillé. Il est préférable d'utiliser des accesseur (set/get).

Page 105: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 105

Style de codageFonctions, méthodes

• Les fonctions Doivent être nommées en respectant les conventions

de nommage.• Mentionner la visibilité des fonctions internes aux

classes (private, protected, ou public) est obligatoire.

• Tout comme les classes, l'accolade ouvrante est toujours écrite sous le nom de la fonction (form "one true brace").

Page 106: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 106

Style de codageFonctions, méthodes

• Il n'y a pas d'espace entre le nom de la fonction et les parenthèses des arguments.

• Il n'y a pas d'espace entre la parenthèse fermante et l'accolade.

Page 107: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 107

Style de codageFonctions, méthodes

• Les fonctions globales sont fortement déconseillées.

• Le passage par référence est permis uniquement dans la déclaration de la fonction.

• L'appel par référence est interdit.• La valeur de retour ne doit pas être entourée de

parenthèses. Ceci peut gêner à la lecture et peut aussi casser le

code si une méthode est modifiée plus tard pour retourner par référence.

Page 108: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 108

Style de codageFonctions, méthodes

• Déclarer fonctions et méthodes

/* * Bloc de documentation */function sampleMethod($a){ // contenu de la fonction // qui doit être indenté avec 4 espaces}function sampleMethod(&$a){}

Page 109: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 109

Style de codageFonctions, méthodes

• Retour de fonction

function foo(){ // INCORRECT return($this->bar); // CORRECT return $this->bar;}

Page 110: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 110

Style de codageVérification des fonctions

• Dans les fonctions de l'application fournie Vérifier si leur déclaration est à la norme. Vérifier les retours, les corriger si nécessaire.

Les fonctions et les méthodes ont exactement les mêmes conventions de codage.

Page 111: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 111

Style de codageUsage de fonctions, méthodes

• Les arguments d'une fonction sont séparés par un espace après la virgule de délimitation.

• L'appel par référence est interdit. Se référer à la section sur la déclaration de fonctions

pour la méthode correcte de passer des argument par référence.

• Pour les fonctions dont les arguments peuvent être des tableaux L'appel à la fonction doit inclure la construction "array"

et peut être divisé en plusieurs ligne pour améliorer la lecture.

Dans ces cas, les standards d'écriture de tableaux s'appliquent aussi.

Page 112: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 112

Style de codageDéclarer fonctions et méthodes

• Exemple d'appels de fonctions

threeArguments(1, 2, 3);threeArguments(array(1, 2, 3), 2, 3);threeArguments(array(1, 2, 3, 'Zend', 'Studio', $a, $b, $c, 56.44, $d, 500), 2, 3);

Page 113: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 113

Style de codageStructure de contrôle : if / else

• Les structure de contrôles basée sur les construction if et elseif Doivent avoir un seul espace avant la parenthèse

ouvrante de la condition et un seul espace après la parenthèse fermante.

• Pour la condition entre les parenthèses Les opérateurs doivent être séparés par des espaces

pour une meilleure lisibilité. Les parenthèses internes sont conseillées pour

améliorer le regroupement logique de longues conditions.

Page 114: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 114

Style de codageStructure de contrôle : if / else

• L'accolade ouvrante est écrite sur la même ligne que la condition.

• L'accolade fermant est toujours écrite sur sa propre ligne.

• Tout contenu présent à l'intérieur des accolades doit être indenté par 4 espaces.

• Pour les instruction "if" qui incluent "elseif" ou "else", le formattage doit être comme le montre ces exemples suivants...

Page 115: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 115

Style de codageStructure de contrôle : if / else

• Exemple avec if, else, elseif

if ($a != 2) { $a = 2;}if ($a != 2) { $a = 2;} else { $a = 7;}

Page 116: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 116

Style de codageStructure de contrôle : if / else

• Exemple avec if, else, elseif

if ($a != 2) { $a = 2;} elseif ($a == 3) { $a = 4;} else { $a = 7;}

Page 117: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 117

Style de codageStructure de contrôle : if / else

• PHP permet que ces instruction soient écrites sans accolades dans certaines circonstances. La convention de codage ne fait pas de différentiation

et toute les instructions "if", "elseif" et "else" doivent utiliser des accolades.

• L'utilisation de la construction "elseif" est permise mais fortement déconseillée au profit de la combinaison "else if".

Page 118: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 118

Style de codageStructure de contrôle : Switch

• Les instructions de contrôle avec "switch" Ne doivent avoir qu'un seul espace avant ma

parenthèse ouvrante de l'instruction conditionnelle, Et aussi un seule espace après la parenthèse fermante.

• Tout le contenu à l'intérieur de l'instruction "switch" doit être indenté avec 4 espaces.

• Le contenu sous chaque "case" doit être indenté avec encore 4 espaces supplémentaires.

Page 119: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 119

Style de codageStructure de contrôle : Switch

• Exemple avec switch

switch ($numPeople) { case 1: break; case 2: break; default: break;}

Page 120: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 120

Style de codageStructure de contrôle : Switch

• La construction default ne doit jamais être oubliée dans une instruction switch.

• Il est parfois utile d'écrire un case sans break Pour distinguer ces cases et les erreurs, il est utile de

mettre le break en commentaire : "// break intentionally omitted".

Page 121: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 121

Style de codageIf et Switch

• Dans l'application fournie Vérifier la structure des if. Vérifier la structure des switch. Ajouter les accolades si elles ne sont pas mentionnées.

La plupart des conventions pour if et switch se retrouveront dans d'autres structures (for, foreach, etc.)

Page 122: zend studio plateform

Copyright © 2007, Zend Technologies Inc.

La PHPDOC

Page 123: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 123

La PHPDOCIntroduction

• La phpdoc est un standard d'écriture pour la documentation d'un code source en PHP.

• On reconnait la phpdoc à sa structure.• La phpdoc permet de documenter en particulier

Les fichiers php Le classes Les fonctions et les méthodes de classe Les constantes et les propriétés de classe Les include / require

Page 124: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 124

La PHPDOCImportance de la documentation

• La documentation permet de rendre compréhensible un code source.

• La phpdoc est un standard ! Qui permet de travailler à plusieurs. Qui permet d'échanger le code source. Qui rend possible une génération universelle de

documentation en ligne ou papier.

Page 125: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 125

La PHPDOCStructure de la PHPDOC

• La PHPDOC est reconnaissable à sa structure

/** * Je suis un commentaire PHPDOC ! */

Page 126: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 126

La PHPDOCLes balises de la PHPDOC

• La PHPDOC possède des balises d'identification

/** * Je suis le titre de mon commentaire. * * Je suis le contenu de mon commentaire. * * @author Steven Van Poeck <[email protected]> * @copyright Zend 2006 * @package taskmanager * @version 0.1 */

Page 127: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 127

La PHPDOCLes tags utiles (1)

• @access Désigne la visibilité d'une propriété ou d'une méthode

(public, protected, private static).• @author

Auteur de l'élément (page, classe, méthode, fonction, propriété)

• @copyright Copyright du code source ou de la classe.

Page 128: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 128

La PHPDOCLes tags utiles (2)

• @deprecated La présence de ce tag informe le développeur que

cette fonctionnalité est dépréciée et sera retirée à terme.

• @example Lien vers un exemple. Il est aussi possible de mettre en

place des exemples "inline".• @ignore

Demande au parseur phpdoc d'ignorer un élément (pour un doublon par exemple)

Page 129: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 129

La PHPDOCLes tags utiles (3)

• @internal Introduit une documentation "privée" qui peut être ou

ne pas être générée à la demande.• @link

Introduit un lien en rapport avec l'élément (exemple ou documentation supplémentaire). Cette balise n'accepte qu'un lien http.

• @see Fait référence à une ressource (classe, fonction, etc. ou

lien).

Page 130: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 130

La PHPDOCLes tags utiles (4)

• @since Informe depuis quelle version de l'application une

fonction existe.• @tutorial

Lien vers la documentation étendue de l'élément. Pour d'autres liens, utiliser plutôt @link ou @see.

• @version Version de l'élément.

Page 131: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 131

La PHPDOCComplétion dans l'éditeur

• Les tags @var et @return permettent d'expliciter le type de donnée qui sera contenu dans une propriété ou renvoyé par une fonction ou une méthode.

• Dans l'exemple du slide suivant, l'éditeur sait que la propriété $statement contient une valeur de type PDOStatement.

Page 132: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 132

La PHPDOCComplétion dans Zend Studio

Page 133: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 133

La PHPDOCDocumentation d'un fichier

• Dans un fichier de l’application fournie Ajoutez un commentaire PHPDOC en haut du fichier Ajoutez un titre et une description Repérez les tags utiles à la description du fichier et ajoutez-les

• A l'aide de l'assistant PHPDocumentor de Zend Studio, générez une documentation sur ce fichier

IMPORTANT : Documentez votre code au fur et à mesure. A la fin de la formation, nous générerons la documentation de l'ensemble de vos exercices.

Page 134: zend studio plateform

Copyright © 2007, Zend Technologies Inc.

Migration vers PHP 5

Page 135: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 135

Migration vers PHP 5 - IntroductionPourquoi migrer ?

• Plus de stabilité• Plus de fonctionnalités• Plus d'évolutivité• Bénéficier des nouveautés, entre autre :

Un support POO complet Un support XML simple, fiable et rapide Une interopérabilité efficace avec les services web Des extensions puissantes : PDO, SOAP, ...

Page 136: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 136

Migration vers PHP 5

Une migration vers PHP 5 doit pouvoir se faire avec méthode. Ce support est important pour tous ceux qui souhaitent gagner du temps et de l'énergie.

• Ce qui change entre PHP 4 et PHP 5• Préparer un plan de migration• L'étape de l'adaptation• L'étape de l'optimisation• Outils pour la migration

Page 137: zend studio plateform

Copyright © 2007, Zend Technologies Inc.

Ce qui change entre PHP 4 et PHP 5

Page 138: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 138

Ce qui change entre PHP 4 et PHP 5Différences syntaxiques

• Visibilité des propriétés et méthodes de classe• Introduction des interfaces• Gestion des exceptions• Des mots clés supplémentaires

exception, final, php_user_filter, interface, implements, public, private, protected, abstract, clone, try, catch, throw

• Des mots clés en moins cfunction, old_function

Page 139: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 139

Ce qui change entre PHP 4 et PHP 5Différences importantes (POO)

• Passage par référence des objets par défaut en PHP 5 (vs par copie en PHP 4) passage par copie avec 'clone'

• Un objet sans propriété n'est plus vide• Une classe doit être déclarée avant son

utilisation• get_class(), get_parent_class(),

get_class_methods() respectent la casse de la classe retournée

• __CLASS__, __METHOD__, et __FUNCTION__ doivent être écrits en majuscules uniquement

Page 140: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 140

Ce qui change entre PHP 4 et PHP 5Différences importantes

• strrpos et strripos matchent la chaine needle entière

• array_merge ne fonctionne qu'avec des tableaux

• ip2long renvoit FALSE plutôt que -1 si une IP invalide est passée en argument

• En cas de double inclusion d'un fichier contenant une déclaration (fonction, classe), une erreur fatale est générée

Page 141: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 141

Ce qui change entre PHP 4 et PHP 5Apports significatifs

• Extensions objet Plusieurs extensions (mysqli, PDO, DOM, ...) sont

orientées objet.• Standard PHP Library

L'utilisation de la SPL avec PHP 5 augmente les performances et les possibilités des objets

• Le support XML Est simplifié, stabilisé et complété Mise à disposition de SimpleXML Amélioration du support DOM

Page 142: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 142

Ce qui change entre PHP 4 et PHP 5Différences méthodologiques

• Ce qui est maintenu Simplicité et souplesse Performances

• Ce qui évolue La notion de POO, les possibilités de modélisation La réutilisabilité L'amélioration des supports XML et bases de données

Page 143: zend studio plateform

Copyright © 2007, Zend Technologies Inc.

Préparer un plan de migration

Page 144: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 144

Préparer un plan de migrationQuelle est votre situation ?

• Existant en PHP 4 à migrer• Migration en cours mais difficile• Existant en un autre langage à migrer

Java ASP Autre

• Existant en PHP 5 à améliorer• Je travaille avec des outils

Des tests unitaires Un profiler / debogueur La phpdoc

Page 145: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 145

Préparer un plan de migrationPréparation du plan de migration

• Adapter le plan à votre situation Les caractéristiques de l'existant (langage, densité) Les méthodes de travail (tests, qualité) Les outils utilisés (framework, tests unitaires) Les ressources disponibles (habitudes, connaissances)

• Faire un plan par étapes Sélectionner les étapes à mettre en place Définir un processus pour chaque étape

Page 146: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 146

Préparer un plan de migrationEtapes de migration

• Adaptation Vérification des fonctions qui ont changées Passage en PHP 5, compatible Zend Engine I Vérification des classes et de leurs utilisations Adaptation des classes et de la syntaxe Passage en PHP 5, Zend Engine II

• Optimisation Passage en PHP 5, Zend Engine II, E_STRICT Mise à jour de la syntaxe Mise à jour des extensions et fonctionnalités Mise à jour de l'architecture globale

Page 147: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 147

Préparer un plan de migrationEn fonction de votre situation...

• Si vous migrez depuis PHP 4 Alors toutes ces étapes

doivent être prises en compte• Si vous migrez depuis un autre

langage Alors passez directement en

PHP 5 E_STRICT et développez avec une bonne architecture (sur le Zend Framework par exemple)

Page 148: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 148

Préparer un plan de migrationEn fonction de votre situation...

• Si vous partez d'un existant PHP 5

Faites toutes les étapes d'optimisation

Il est recommandé d'optimiser avec les tests unitaires

• Si vous recommencez une migration

Commencez à partir de 'vérification des classes et de leurs utilisations'

Page 149: zend studio plateform

Copyright © 2007, Zend Technologies Inc.

L'étape de l'adaptation

Page 150: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 150

L'étape de l'adaptationPlan général d'adaptation

• Vérifier les fonctions Quelques rares fonctions ne sont pas présentes ou ont

été modifiées dans PHP 5• Passage en PHP 5, compatible Zend Engine I

Cela permet d'être en PHP 5 tout en restant compatible avec le moteur de PHP 4

• Vérification et adaptation des classes C'est l'étape la plus minutieuse et critique : passage par

référence par défaut en PHP 5• PHP 5, Zend Engine II

Mise en place du moteur de PHP 5 juste après l'étape précédente et déboguage complet

Page 151: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 151

L'étape de l'adaptationCheck : fonctions, mots clés

• Vérification des fonctions suivantes strrpos, strripos array_merge get_class, get_parent_class, get_class_methods ip2long

• Supprimer les mots clés suivants cfunction, old_function

• Les mots clés suivants ne doivent pas être utilisés exception, final, php_user_filter, interface, implements,

public, private, protected, abstract, clone, try, catch, throw

Page 152: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 152

L'étape de l'adaptationVérification

• Rechercher ces mots clés et... Vérifier leur fonctionnement s'il s'agit de fonctions qui

ont évoluées Les supprimer (et les remplacer par un équivalent) s'ils

ont été retirés Les modifier s'ils entrent en conflit avec un nouveau

mot clé

Page 153: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 153

L'étape de l'adaptationPHP 5, compatible ZE I

• Passer en PHP 5 compatible Zend Engine I Dans php.ini, mettre la directive

'zend.ze1_compatibility_mode' à On Cela a pour effet d'utiliser PHP 5 avec le moteur de PHP

4• S'il y a des problèmes

Les corriger à l'aide d'un débogueur et les erreurs affichées

• Si tout fonctionne Alors les différences minimes entre PHP 4 et PHP 5 sont

réglées, passer à l'étape suivante

Page 154: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 154

L'étape de l'adaptationVérification des classes

• Objectif Vérifier toutes les instanciations de classes et les

passages des objets aux fonctions et aux variables• Deux solutions pour rendre compatible PHP 5

Mettre le mot clé 'clone' devant tout passage aux fonctions et aux variables (non recommandé)

Remanier le code pour tenir compte du passage par référence (recommandé, cf. slide suivant)

Page 155: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 155

L'étape de l'adaptationAdaptation des classes

• Passage par référence = même objet

<?phpfunction modify($obj){ $obj->name = 'Guillaume';}// L'objet $a est modifié PHP 5 !$a = new MyObj();modify($a);// L'objet $a est modifié PHP 5 !$b = $a;$b->name = 'William';

Page 156: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 156

L'étape de l'adaptationMéthode d'adaptation

• Relire son algorithme est nécessaire pour détecter les problèmes éventuels

• Utiliser 'clone' si c'est nécessaire• Retirer les & du passage par référence PHP 4• Référence, copie : pour ou contre ?

Le passage par référence économise des ressources : on ne duplique pas l'objet en mémoire

En Java, C++, les passages sont faits aussi par référence par défaut

Page 157: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 157

L'étape de l'adaptationPHP 5, ZE II

L'utilisation des tests unitaires réduira considérablement le temps passé à cette étape tout en assurant un maximum de stabilité à votre migration, pensez-y !

• Une fois toutes les vérifications effectuées Passer 'zend.ze1_compatibility_mode' à Off Tester minutieusement l'ensemble des fonctionnalités

• En cas de dysfonctionnement Se référer à l'erreur générée (cas facile) Relire son algorithme en ayant en tête les évolutions

précédentes• A la fin de cette étape, votre application fonctionne

mais n'est pas optimisée pour PHP 5

Page 158: zend studio plateform

Copyright © 2007, Zend Technologies Inc.

L'étape de l'optimisation

Page 159: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 159

L'étape de l'optimisationPlan général d'optimisation

• Passage en E_STRICT E_STRICT concerne les spécificités de PHP 5

• Remaniement de la syntaxe Effectuer toutes les modifications de manière à ne pas

générer d'erreurs E_STRICT• Les extensions natives

De nombreuses fonctionnalités sont devenues stables et efficaces en PHP 5, il est très recommandé d'effectuer ces petites migrations

• L'architecture On passe du procédural à l'objet, cela permet

d'adopter une architecture mixte intéressante

Page 160: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 160

L'étape de l'optimisationPassage en E_STRICT

• Le passage en E_STRICT permet d'être assuré de l'utilisation de la syntaxe PHP 5 de remanier la syntaxe si nécessaire d'avoir des suggestions pour améliorer le code

• Ce mode produit des notices Pas d'arrêt d'exécution en cas d'erreur

Page 161: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 161

L'étape de l'optimisationAdoption des extensions natives

• Avantages Rapidité et stabilité accrues Moins de code PHP pour plus de performances Des extensions objet faciles à manier

• Quelques extensions natives objet pour PHP 5 DOM, PDO et ses drivers, mysqli, SDO, SimpleXML,

SQLite, SPL, XMLReader, XSL

Page 162: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 162

L'étape de l'optimisationRemaniement de l'architecture

• Du procédural à l'objet L'architecture globale évolue L'architecture des composants évolue

• Quelle différence ? L'objet est plus modulaire et compatible UML, bien que

plus verbeux La phpdoc est plus lisible et complète en objet Le travail en équipe est favorisé par la structuration

objet

Page 163: zend studio plateform

Copyright © 2007, Zend Technologies Inc.

Outils pour la migration

Page 164: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 164

Outils pour la migrationUtilité des outils

• Migrer plus rapidement En automatisant En ayant une meilleure visibilité

• Assurer stabilité et cohérence En testant efficacement En maintenant les performances au top

• Migrer efficacement l'architecture Grâce à la maîtrise de celle-ci à tout moment

Page 165: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 165

Outils pour la migrationDiversité des outils

Page 166: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 166

Outils pour la migrationLes tests unitaires

• Ils sont l'allié de tout refactoring• Ils assurent le bon fonctionnement du code• Ils permettent de trouver tout de suite où se

trouve l'erreur• Principe

A chaque fonctionnalité élémentaire, un test est déclaré

Ce test déroule un scénario qui utilise cette fonctionnalité

Tout ce qui est effectué est contrôlé En cas d'erreur ou d'incohérence, le test échoue

Page 167: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 167

Outils pour la migrationMéthode migration avec les TU

• Test à postériori 1. développer la fonctionnalité 2. développer les tests par dessus

• Test à priori 1. construire le squelette applicatif 2. développer les tests comme si la fonctionnalité

existait 3. développer la fonctionnalité jusqu'à ce que les tests

passent• Notion de couverture

A 0%, la couverture est nulle (pas de test) et à 100%, la couverture est maximale (test de tout le code)

Page 168: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 168

Outils pour la migrationUn profiler / débogueur

• Le profiler Donne des statistiques sur l'ensemble des instructions

élémentaires effectuées par une requête PHP Détecte : les goulots d'étranglements, les doublons

• Le débogueur Permet d'exécuter une requête pas à pas en maîtrisant

l'ensemble de l'environnement Utilité : examiner le déroulement d'une requête qui

présente des difficultés

Page 169: zend studio plateform

Copyright © 2007, Zend Technologies Inc.

La gestion des versions

Page 170: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 170

La gestion des versionsIntroduction

• Principe du versionnage• Outils existants• Opérations de base• Récupération après conflit ou erreur• Bonnes pratiques• Considérations d'architecture• Utilisation dans Zend Studio

Page 171: zend studio plateform

Copyright © 2007, Zend Technologies Inc.

Principe du versionnage

Page 172: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 172

Principe du versionnageIntroduction

• Objectifs, utilité• Principe global• Le serveur• Le client

Page 173: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 173

Principe du versionnageObjectifs, utilité

• Permettre le travail à plusieurs Partage des sources Gestion des conflits d'écritures Mémorisation de 'qui à fait quoi'

• Gestion de versions Figer une version que l'on peut extraire à tout moment Revenir sur une version de fichier de l'application Gérer plusieurs versions en parallèle

Page 174: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 174

Principe du versionnagePrincipe global

Page 175: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 175

Principe du versionnageLe serveur

• Une base de données (dépot de données)• Lié à un démon (http, ssh)• Gestion des utilisateurs, des groupes et des droits• Un outil de gestion et d'administration

Page 176: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 176

Principe du versionnageLe client

• Un logiciel 'client' (TortoiseSVN...)• La dernière copie de travail en cours• Des méta-fichiers (.svn, .cvs)

Page 177: zend studio plateform

Copyright © 2007, Zend Technologies Inc.

Outils existants

Page 178: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 178

Outils existantsIntroduction

• CVS et Subversion• Fonctionnalités de Subversion

Page 179: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 179

Outils existantsCVS et Subversion

• CVS et Subversion : 2 outils phares pour la gestion des sources

• Tous deux opensource• CVS

Existe depuis de nombreuses années Un outil qui a fait ses preuves

• Subversion Le successeur de CVS Meilleure gestion des fichiers binaires et des répertoires

Page 180: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 180

Outils existantsFonctionnalités de Subversion

• Versionnage, stockage dans une base berkeley• Gestion avancée des droits

Utilisateurs, groupes, droits sur répertoire, lecture/écriture

• Association avec un serveur HTTP ou SSH• Copies (tags), branches, merges• Différences, historique, logs• Adaptation à LDAP

Page 181: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 181

Outils existantsInstallation du client

• Téléchargez TortoiseSVN• Installez-le• Vérifiez son bon fonctionnement en faisant un clic-

droit sur n'importe quel dossier à votre disposition.• Faites une extraction (checkout) du projet spécifié par

votre formateur.

Le premier client Subversion est l'exécutable 'svn' en ligne de commandes. Celui-ci est très pratique dans un environnement UNIX/Linux.

Page 182: zend studio plateform

Copyright © 2007, Zend Technologies Inc.

Opérations de base

Page 183: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 183

Opérations de baseIntroduction

• Liste des opérations• Exemples d'utilisation en ligne de commandes

Page 184: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 184

Opérations de baseListe des opérations

• checkout• update• commit• add• cat• cleanup• copy• delete• export, import

• info• list• log• merge• move• revert• status• switch• lock, unlock• mkdir

Page 185: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 185

Opérations de baseCommandes usuelles

Page 186: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 186

Opérations de baseCommande ADD

• Exemple avec la commande svn add

[guillaume@guillaume training]$ svn add 17_version_controlA 17_version_controlA 17_version_control/picturesA (bin) 17_version_control/pictures/zendstudio_svn_menu.pngA (bin) 17_version_control/pictures/zendstudio_svn_commit.pngA (bin) 17_version_control/pictures/zendstudio_svn_configuration.pngA (bin) 17_version_control/pictures/subversion_principe.odgA (bin) 17_version_control/pictures/subversion_principe.pngA (bin) 17_version_control/version_control.odp

Page 187: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 187

Opérations de baseCommande COMMIT

• Exemple avec la commande svn commit

$ svn commit -m "Ajout des slides version control" 17*guillaume@notredame's password:Ajout 17_version_controlAjout 17_version_control/picturesAjout (bin) 17_version_control/pictures/subversion_principe.odgAjout (bin) 17_version_control/pictures/subversion_principe.pngAjout (bin) 17_version_control/pictures/zendstudio_svn_commit.pngAjout (bin) 17_version_control/pictures/zendstudio_svn_configuration.pngAjout (bin) 17_version_control/pictures/zendstudio_svn_menu.pngAjout (bin) 17_version_control/version_control.odpAjout 17_version_control/version_control.phpTransmission des données .......Révision 96 propagée.

Page 188: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 188

Opérations de baseCommande STATUS

• Exemple avec la commande svn status

[guillaume@guillaume Zend]$ svn status? VersionControl? Subversion? CodingStandards? VersionControl.phpM PhpEssentials.phpM Reuse.phpM CodingStandards.phpM Common.php

Page 189: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 189

Opérations de baseCommande CHECKOUT

• Exemple avec la commande svn checkout

$ svn checkout svn+ssh://guillaume@notredame/(...)/17_version_controlguillaume@notredame's password:A 17_version_control/version_control.odpA 17_version_control/version_control.phpA 17_version_control/picturesA 17_version_control/pictures/subversion_principe.odgA 17_version_control/pictures/zendstudio_svn_menu.pngA 17_version_control/pictures/zendstudio_svn_configuration.pngA 17_version_control/pictures/zendstudio_svn_commit.pngA 17_version_control/pictures/subversion_principe.pngRévision 98 extraite.

Page 190: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 190

Opérations de baseCommande UPDATE

• Exemple avec la commande svn update

[guillaume@guillaume Slides]$ svn updateguillaume@notredame's password:A Zend/SubversionA Zend/VersionControlA Zend/VersionControl/code_subversion_update.phpA Zend/VersionControl/code_subversion_status.phpA Zend/VersionControl/code_subversion_checkout.phpA Zend/VersionControl/code_subversion_add.phpA Zend/VersionControl/code_subversion_commit.phpA Zend/CodingStandardsU Zend/PhpEssentials.phpU Zend/Reuse.phpA Zend/VersionControl.phpU Zend/CodingStandards.phpU Zend/Common.phpActualisé à la révision 99.

Page 191: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 191

Opérations de basePrincipe chronologique

Page 192: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 192

Opérations de baseUtilisation de TortoiseSVN

• Avec le dépôt de données (repository) fourni Faites un 'checkout' de l'application Créez un fichier ayant pour nom le nom de votre poste et

ajoutez-le (add) Supprimez également un fichier Regardez ce que la commande 'svn status' renvoie Regardez ce que la commande 'svn diff' renvoie Validez le tout avec la commande 'commit' Faites une mise à jour (update) une fois que tout le monde a

validé (commit)

N'hésitez pas à aller plus loin en regardant la documentation et la signification des autres options dans TortoiseSVN.

Page 193: zend studio plateform

Copyright © 2007, Zend Technologies Inc.

Récupération après conflit ou erreur

Page 194: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 194

Récupération après conflit ou erreurIntroduction

• Qu'est-ce qu'un conflit ?• Résoudre un conflit• Merges automatiques• Résoudre un blocage

Page 195: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 195

Récupération après conflit ou erreurQu'est-ce qu'un conflit ?

• Détecter un conflit En ligne de commande : marque 'C' devant un fichier

(liste de l'update) Avec TortoiseSVN : le fichier apparaît avec une marque

rouge• Fichiers générés

Fichier .mine : votre fichier tel qu'il était avant l'update Fichier .r<1> : révision avant l'update Fichier .r<2> : révision après l'update Fichier en conflit : contient des marques >>> ... <<< aux

endroits où le conflit à lieu

Page 196: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 196

Récupération après conflit ou erreurGénérer un conflit

• Dans votre copie locale Modifiez le fichier zend.php à la racine de l'application fournie Une fois que tout le monde a modifié, commitez tous en

même temps Si la validation (commit) ne fonctionne pas, faites une mise à

jour (update) Ceux qui ont un conflit déclaré ne peuvent plus valider

(commit)

De nombreux updates permettent entre autre de réduire le nombre de conflits que vous pouvez avoir.

Page 197: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 197

Récupération après conflit ou erreurRésoudre un conflit

• Deux solutions Supprimer le fichier original et renommer un métafichier

(.mine ou .r<x>) en lui retirant son extension Editer le fichier original, résoudre le conflit

manuellement et supprimer les métafichiers• Remarque

Tant que les méta-fichiers existent, le conflit est actif, il n'est pas possible de valider (commit)

Page 198: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 198

Récupération après conflit ou erreurRésoudre le conflit

• Connecter le vidéo-projecteur sur un poste stagiaire• Sur ce poste

Résoudre le conflit manuellement• Puis sur tous les autres postes

Supprimer le fichier et ses méta-fichiers Puis faire une mise à jour (update)

La résolution du conflit doit toujours être effectuée par une seule personne, sinon d'autres conflits seront générés.

Page 199: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 199

Récupération après conflit ou erreurMerges automatiques

• Si des modifications ont été effectuées par deux personnes en même temps dans des endroits différents d'un même fichier, Subversion va résoudre le conflit automatiquement Les modifications des deux personnes seront prises en

compte Un indicateur 'G' apparaît lors d'une mise à jour

(update) en ligne de commandes Il est nécessaire de tester le bon fonctionnement du

fichier et de l'application en cas de merge automatique

Page 200: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 200

Récupération après conflit ou erreurMerge automatique

• Connecter le vidéo-projecteur sur un poste stagiaire Modifier une ligne et en ajouter une autre en haut du fichier

puis valider (commit)• Connecter le vidéo-projecteur sur un autre poste

Modifier une ligne et en supprimer une en bas du fichier puis mettre à jour (update)

Vérifier le bon fonctionnement du merge

Les merges automatiques sont activés par défaut. Se référer à la documentation de Subversion pour les considérer comme des conflits à résoudre manuellement.

Page 201: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 201

Récupération après conflit ou erreurRésoudre un blocage

• Si la copie locale devient instable Il n'est plus possible de valider (commit) Subversion affiche un message d'erreur demandant de

faire un 'cleanup'• Résolution

A la racine de la copie locale, lancer la commande 'cleanup'

Page 202: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 202

Récupération après conflit ou erreurRésoudre un blocage

• Si le cleanup ne résoud pas le problème Déplacer le répertoire en erreur en dehors de la copie

de travail Faire une mise à jour (update) Remplacer un par un les fichiers modifiés dans la partie

mise à jour Puis valider (commit)

Page 203: zend studio plateform

Copyright © 2007, Zend Technologies Inc.

Bonnes pratiques

Page 204: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 204

Bonnes pratiquesIntroduction

• Documenter le commit• Mettre à jour régulièrement• Valider du code jouable• Nommer les versions• Nommer les branches• Versions stables / instables

Page 205: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 205

Bonnes pratiquesDocumenter le commit

• Lors de la validation, un message peut être saisi• A quoi bon ?

Savoir ce pour quoi les modifications ont été faites Avoir un aperçu de l'avancement Savoir qui a fait quoi

• Associé à la commande commit la commande 'log' permet de consulter les messages

émis avec commit

Page 206: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 206

Bonnes pratiquesCommande LOG

• Exemple avec la commande svn log

[guillaume@guillaume 06_php_advanced]$ svn log .guillaume@notredame's password:-------------------------------------------------------------------r78 | guillaume | 2007-01-11 17:59:03 (jeu, 11 jan 2007) | 1 lineConventions de codage et corrections des bugs signalés-------------------------------------------------------------------r77 | guillaume | 2007-01-09 19:01:26 (mar, 09 jan 2007) | 1 lineCorrections orthographiques sur les slides de php avancé-------------------------------------------------------------------r52 | steven | 2006-10-04 09:04:22 (mer, 04 oct 2006) | 4 lines(...)Initial import-------------------------------------------------------------------

Page 207: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 207

Bonnes pratiquesMettre à jour régulièrement

• La mise à jour (update) permet de maintenir votre copie de travail à jour

• Elle tient compte des modifications validées par les membres de l'équipe

• Elle permet de détecter et résoudre les conflits• On peut mettre à jour à n'importe quel moment

Il faudra penser à mettre à jour (update) systématiquement avant de travailler et avant de valider (commit)

Page 208: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 208

Bonnes pratiquesValider du code jouable

• Pourquoi ? Parce que n'importe quel export de votre application

doit fonctionner, même si vous choisissez un export antérieur à la date courante.

Parce que tout ce qui est validé dans le dépôt de données (repository) est enregistré à jamais.

Parce que du code qui ne marche pas ne sert à rien.

Page 209: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 209

Bonnes pratiquesNommer les versions

• Il existe deux types de versions Les versions de fichiers, qui sont gérées par Subversion Les versions de votre application, qui sont gérées par

les utilisateurs• Nommage des versions

RELEASE_<version>_<subversion>_<revision>[_<rc>] Ex : RELEASE_1_2_1 Ex : RELEASE_2_0_0_RC1 (release candidate 1)

• Commande associée 'copy' : permet de créer des 'tags' et des 'branches'

Page 210: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 210

Bonnes pratiquesNommage : vocabulaire

• Version Incrémentée lors d'un gros changement global, ou une

refonte.• Sous-version (subversion)

Incrémentée lorsque des évolutions sont apportées• Révision

Incrémentée lorsque des corrections sont apportées• Release Candidate (RC)

Une version pas encore terminée mais disponible pour tester

Page 211: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 211

Bonnes pratiquesIllustration chronologique

Page 212: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 212

Bonnes pratiquesCommande copy

• Subversion avancé : commande 'copy'

$ svn help copycopy (cp): Recopie quelque chose dans une copie de travailou un dépôt, avec historique.usage : copy SRC DSTSRC et DST sont un chemin dans la copie de travail (CT) ou une URL : CT -> CT : copie et mise en attente pour ajout (avec historique) CT -> URL : propage immédiatement une copie de CT vers URL URL -> CT : extrait une URL dans CT, mise en attente pour ajout URL -> URL : copie côté serveur ; utilisée pour les branches et marques

Page 213: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 213

Bonnes pratiquesFiger une version

• A la racine de votre dépôt, il y a 3 répertoires 'trunk' : correspond à la branche principale 'tags' : correspond aux versions figées de l'application 'branches' : correspond aux branches de l'application

• Branchez le vidéo-projecteur sur un poste stagiaire• A l'aide de la commande 'copy', figez la version 1.0.0

de l'application dans le répertoire 'tags'

Avoir les trois répertoires 'trunk', 'branches' et 'tags' à la racine est une convention adoptée dans une majorité de projets.

Page 214: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 214

Bonnes pratiquesCréer une branche

• Branchez le vidéo-projecteur sur un autre poste• A l'aide de la commande 'copy', créez une branche

correspondant à la version 2 de l'application• Une fois ceci réalisé, il est possible pour les autres

stagiaires de faire un 'checkout' de la branche et de travailler dessus

Il est rare de créer une branche, mais intéressant de savoir qu'il est possible de le faire avec 'copy'.

Page 215: zend studio plateform

Copyright © 2007, Zend Technologies Inc.

Utilisation dans Zend Studio

Page 216: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 216

Utilisation dans Zend StudioIntroduction

• Configuration• Menu contextuel• Update / Commit• Diff• Status

Page 217: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 217

Utilisation dans Zend StudioConfiguration

Page 218: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 218

Utilisation dans Zend StudioMenu contextuel

Page 219: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 219

Utilisation dans Zend StudioUpdate / Commit

• Update Faire clic-droit sur un dossier ou un fichier puis

Subversion->update Valider avec les options par défaut Mettre un mot de passe si requis Les fichiers sont mis à jour et le rapport est affiché dans

la fenêtre 'messages'• Commit

Faire clic-droit sur un dossier ou un fichier puis Subversion->commit

Spécifier le message

Page 220: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 220

Utilisation dans Zend StudioCommande 'diff'

Page 221: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 221

Utilisation dans Zend StudioCommande 'status'

Page 222: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 222

Utilisation dans Zend StudioManipuler Zend Studio

• Modifiez le fichier portant le nom de votre poste• Faites un diff pour voir ce que vous avez modifié• Faites un status à la racine de votre copie locale• Validez les modifications avec Zend Studio (commit)• Mettez à jour (update) votre copie locale avec Zend

Studio une fois que tout le monde à validé

Si vous n'avez pas le menu contextuel Subversion, peut-être que vous n'avez pas coché 'Subversion' dans la configuration.

Page 223: zend studio plateform

Copyright © 2007, Zend Technologies Inc.

Opérations Avancées

Page 224: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 224

Opérations AvancéesCommandes d'administration

• svnadmin create : création d'un dépôt de données

• svnadmin dump : sauvegarde d'un dépôt Note options : incremental, d'une version à une autre

• svnadmin load : rechargement d'un dump• svnadmin hotcopy : copie à chaud d'un dépôt• svnadmin deltify : compression du dépôt• Autres commandes

verify, lslocks, rmlocks, lstxns, rmtxns, setlog, list-dblogs, list-unused-dblogs

Page 225: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 225

Opérations AvancéesA vous la parole

• Comment revenir sur une version précédente ? D'un fichier ? D'une application ?

• Comment déplacer ou renommer un fichier dans une copie locale ? Quels sont les risques ?

• Comment récupérer un fichier supprimé ?

Page 226: zend studio plateform

Copyright © 2007, Zend Technologies Inc.

Merci de votre attention !

Page 227: zend studio plateform

Copyright ©2007 Zend Technologies, Inc. # 227

Standards de codageAvez-vous des questions ?

• D'ordre général sur notre formation ?• Sur un point précis qui pose problème ?• Sur un point précis à approfondir ?• Sur un tout autre sujet ?


Recommended