Pourquoi utiliser l’approche Trait avec une grande Class ?

Lors de la remise à niveau (et mise au norme WP Code Standards) d’un code source parfois de plus de 10 ans, le problème de fichier d’une classe de près de 10000 lignes s’est posé. En effet, le process phpcs est très lent et il peut être difficile de regrouper les functions ajoutées au fil des années. La répartition en sous-classe ou classe spécifique avec des nouveaux noms n’est pas aisée et demande beaucoup de changements dans les fichiers. En fouillant et cherchant dans la doc et les forums, rares sont ceux qui citent l’approche par des Trait qui ressemblent à une classe très simple en php.

Prenons le cas d’un ensemble de méthode qui gère une page de réglages de l’admin et des functions connexes dans les meta boxes.

On crée un fichier, le Trait est dedans, on y copie ces dites functions. Pas de renommage, la pseudo variable $this reste opérante…

  • L’appel au trait se fait en début de la classe que l’on réorganise avec “use”.

Donc il reste plus qu’à mettre en place le fichier contenant le Trait (de préférence un seul)

Il est requis avant celui de la classe contenant le “use” sinon une erreur fatale est provoquée.

Et maintenant, partie par partie, il est plus aisé de faire évoluer le code notamment du côté admin.