Allez plus loin

Allez plus loin

Il faut savoir s'arrĂȘter Ă  un moment donnĂ©... et je crois que ce moment est venu !

On pourrait encore passer des heures et des heures Ă  optimiser notre code, Ă  l'affiner... mais nous finirions par recrĂ©er un framework nous-mĂȘmes ! Or, si les frameworks ont Ă©tĂ© inventĂ©s, c'est bien pour une raison : ils nous permettent de ne pas avoir Ă  rĂ©inventer la roue !

Pourquoi nous avoir fait créer un site en MVC à la main si les frameworks existent ?

Parce que j'avais besoin que vous compreniez ce qui a amenĂ© les dĂ©veloppeurs Ă  crĂ©er des frameworks. Ils se sont posé exactement les mĂȘmes questions que vous (ce ne sont pas des extraterrestres !). Ils ont donc beaucoup rĂ©flĂ©chi pour chercher des solutions afin que leur code reste propre.

Voici quelques conseils si vous voulez aller plus loin.

Autoloadez !

Je vous l'avais promis, je vais vous parler d'une solution pour ne plus avoir à utiliser desrequire_onceen plus des espaces de nom. C'est le but du systÚme autoload fourni par PHP.

ConcrĂštement, l'autoload est un mĂ©canisme qui va ĂȘtre appelĂ© Ă  chaque fois que vous pointez sur un nom tirĂ© d'un namespace. Pour chaque nom complet pointĂ© (une classe, par exemple), un fichier PHP va ĂȘtre "automatiquement chargĂ©". Et la chose fantastique, c'est que cette association entre "espace de nom" et "fichier Ă  inclure" est entiĂšrement personnalisable !

Vous pouvez donc configurer un autoload qui va automatiquement charger toutes les classes du namespaceApplication\Model\Comment\depuis le fichiersrc/model/comment.php. Et faire de mĂȘme pour le reste de votre modĂšle. Et pour vos contrĂŽleurs.

Bien sûr, si on fait comme ça, c'est fastidieux. Puissant, certes, mais vraiment fastidieux. Et c'est pour ça que la plupart des développeurs PHP utilisent une convention pour créer leurs classes et leurs fichiers : la PSR-4. Pour la résumer :

  • Une classe doit ĂȘtre prĂ©sente par fichier.

  • Le nom du fichier doit correspondre au nom de la classe (avec les majuscules).

  • On a le droit Ă  un prĂ©fixe personnalisĂ©, qui correspondra Ă  un dossier personnalisĂ©.

Je vous recommande donc vivement de coder avec ces contraintes !

Quant Ă  l'activation de l'autoload dans votre code... Il faut savoir que sur la plupart des projets sur lesquels vous travaillerez, les dĂ©veloppeurs utilisent un gestionnaire de dĂ©pendances, appelé Composer. Il sert Ă  inclure dans votre projet du code qui n'est pas maintenu par vous. C'est extrĂȘmement puissant. Eh bien, ce gestionnaire de dĂ©pendances est capable de gĂ©nĂ©rer automatiquement un fichier PHP qui configure l'autoload. Il ne vous restera qu'Ă  l'inclure en tĂȘte de votreindex.php:

<?php

require __DIR__ . '/vendor/autoload.php';

Facile !

Documentez !

Les codes professionnels sont souvent bien documentés.

Enfin... documentés oui, mais pas n'importe comment ! Il existe des conventions de documentation. En PHP, on commente dans le format PHPDoc.

À l'aide d'un programme spĂ©cial (PHPDoc), on peut gĂ©nĂ©rer automatiquement une documentation depuis votre code :

Une documentation PHPDoc automatiquement générée depuis les commentaires du code
Une documentation PHPDoc automatiquement générée depuis les commentaires du code

Ce type de documentation peut se révéler trÚs utile pour les développeurs qui ont besoin de comprendre comment votre code source fonctionne dans les grandes lignes.

Pour obtenir ce résultat, les variables et fonctions membres des objets sont précédés d'un commentaire qui suit une convention bien particuliÚre :

<?php

/**
* Executes a compiler pass.
*
* This method will execute the business logic associated with a given compiler pass and allow it to manipulate
* or consumer the Object Graph using the ProjectDescriptor object.
*
* @param ProjectDescriptor $project Representation of the Object Graph that can be manipulated.
*
* @return mixed
*/
public function execute(ProjectDescriptor $project)
{
   // ...
}

Alors oui, ça fait pas mal de commentaires dans le code, mais ça a un double avantage :

  • Le rĂŽle du code est expliquĂ© quand vous ĂȘtes en train de lire le fichier source.

  • Vous pouvez gĂ©nĂ©rer une documentation en HTML Ă  partir de ça (comme on l'a vu sur la capture au-dessus).

Cela nous permet d'expliquer notamment à quoi sert la fonction membre, quels paramÚtres elle prend en entrée et quelle valeur elle est censée retourner.

Apprenez-en plus sur la programmation orientée objet

La programmation orientée objet est un domaine trÚs vaste. Nous n'avons fait qu'effleurer la surface des possibilités.

Si un peu de théorie ne vous fait pas peur, je ne saurais trop vous recommander de lire le cours Programmez en orienté objet en PHP sur OpenClassrooms. Il contient de nombreux concepts qui vous seront utiles !

Ne sortez pas un tank pour tuer une mouche

En gĂ©nĂ©ral, l'intĂ©rĂȘt d'un code propre se voit quand vous commencez Ă  travailler sur un gros projet. Sur un tout petit projet, il n'est pas forcĂ©ment nĂ©cessaire de sortir l'artillerie lourde...

Développeur sortant l'artillerie lourde pour un tout petit problÚme
Développeur sortant l'artillerie lourde pour un tout petit problÚme

Gardez donc en tĂȘte qu'il faut faire l'Ă©quilibre entre un beau code optimisĂ© (qu'on met des heures Ă  crĂ©er) et un code un peu moche (mais qui marche tout de suite). Ne soyez pas dans les extrĂȘmes : ne cherchez pas non plus Ă  tout optimiser Ă  l'infini, au risque de passer trop de temps sur la beautĂ© de votre code plutĂŽt qu'Ă  rĂ©ellement crĂ©er des fonctionnalitĂ©s utiles.

Le plus grand ennemi des faux-dĂ©butants que vous ĂȘtes maintenant n'est pas le code sale (ça, c'est le truc des dĂ©butants). Non, votre plus grand ennemi s'appelle l'optimisation prĂ©maturĂ©e. Ça veut dire vouloir Ă  tout prix faire mĂ©ga-propre quand ça n'est pas nĂ©cessaire.

Un bon dĂ©veloppeur sait au contraire quand optimiser et quand ne pas optimiser. Il s'autorise mĂȘme volontairement Ă  laisser un peu de dette technique (un code non optimisĂ©) pour pouvoir avancer plus vite. Ensuite, par contre, quand le besoin s'en fait ressentir, il n'hĂ©site pas Ă  revenir en arriĂšre pour refactoriser son code afin qu'il soit plus optimisĂ©.

Bref, comme souvent dans la vie : il faut rester Ă©quilibrĂ©. 😊

Utilisez un framework

Ce sera sûrement la prochaine étape pour vous. Les frameworks sont des super-bibliothÚques qui contiennent tout le code qui vous permet d'éviter de réinventer la roue.

Les frameworks vous imposent souvent une façon de coder bien précise (notamment du MVC, de la POO, etc.). Il faut du temps pour apprendre à les utiliser correctement, mais vous gagnerez ensuite beaucoup de temps et aurez un code trÚs propre.

Il existe plusieurs frameworks PHP. Citons notamment :

  • Zend Framework : le framework créé par la sociĂ©tĂ© qui a conçu PHP (Zend). Il a un peu moins le vent en poupe aujourd'hui mĂȘme s'il reste connu.

  • Symfony : un des frameworks les plus connus, dĂ©veloppĂ© par des Français. 🐓 Il existe le cours Construisez un site web Ă  l'aide du framework Symfony 5 sur OpenClassrooms.

  • Laravel : un autre framework PHP trĂšs connu.

OpenClassrooms utilise Symfony de son cÎté. N'hésitez pas à aller consulter le cours sur Symfony aprÚs avoir fini ce cours !

En résumé

  • La Programmation OrientĂ©e Objet va beaucoup, beaucoup plus loin que ce qui est dit dans ce cours.

  • Documenter son code est une excellente pratique dans le monde professionnel. Il y a des outils pour ça, notamment la PHPDoc.

  • L'autoloading est une fonctionnalitĂ© de PHP qui permet de faire automatiquement lesrequire_oncedĂšs que les namespaces sont utilisĂ©s. Pour en profiter, la plupart des codes source PHP respectent la PSR-4, une convention de nommage de classes et de fichiers.

  • Tous les outils ne sont pas utiles sur tous les projets. Il faut passer suffisamment de temps Ă  bien concevoir son code, mais ne pas optimiser prĂ©maturĂ©ment non plus.

  • Les frameworks sont des outils qui mettent Ă  disposition des bibliothĂšques de code et des pratiques pour aider les dĂ©veloppeurs Ă  amĂ©liorer leur productivitĂ©. Il est recommandĂ© d'avoir un certain niveau d'expertise sur les frameworks majeurs.

Eh bien voilà, on a fait le tour de ces quelques points qu'il me paraissait important de vous faire découvrir. Approfondissez-les à votre rythme, pour progresser dans votre vie professionnelle.
C'était le dernier chapitre et j'ai été ravi de passer ces moments avec vous. Bonne continuation dans votre aventure dans le monde du PHP. En avant pour le quiz final !

Et si vous obteniez un diplĂŽme OpenClassrooms ?
  • Formations jusqu’à 100 % financĂ©es
  • Date de dĂ©but flexible
  • Projets professionnalisants
  • Mentorat individuel
Trouvez la formation et le financement faits pour vous