Ne suivez pas les normes de codage WordPress
Lorsque j’ai commencé à développer WordPress, j’ai eu la chance de trouver des tutoriels de haute qualité de la part de développeurs expérimentés, comme Tom mcfarlin et Pippin Williamson, qui connaissaient très bien les écosystèmes. Plus j’apprends, plus j’aime me joindre à WordPress path. Depuis que j’ai appris comment développer des plug – ins en tant que représentant de support et développeur pour le cadre des pods, j’ai appris de première main ce qui se passe lorsque des lignes directrices importantes que nous avons tous convenu de suivre sont violées. Par exemple, un thème peut remplacer le jquery du noyau WordPress et fonctionne bien, mais tout plug – in qui suppose l’existence du jquery du noyau WordPress peut ne pas fonctionner.
C’est – à – dire qu’il existe une pratique généralement acceptée dans le développement de plug – ins, de thèmes et de sites, selon laquelle le code devrait suivre les critères de définition du développement de base WordPress. Je ne suis pas d’accord, sauf si vous travaillez sur le développement de base. Je ne veux pas être critique, mais WordPress est un cadre qui a commencé avant que ceux qui l’ont construit comprennent l’importance d’un nom cohérent, et la Bibliothèque standard de cette langue n’a pas eu de concept d’importance d’un nom cohérent au début. La communauté PHP a développé, par l’intermédiaire de l’équipe PHP Fig, comment écrire et publier du Code PHP pour coder correctement le format de code, le Code de structure, le Code de chargement automatique, et comment mettre en œuvre des concepts communs: événements, cache, http requis.
Ainsi, dans le développement de PHP, il y a maintenant le \
Net rivet \/ WP http chetto est utilisé pour les requêtes http et est essentiellement conforme à la norme PSR – 7. L’api http WordPress est donc une boîte noire pour le reste de mon code. Connectez le reste de mon code à la classe http via l’interface, ce qui signifie que je peux changer la partie interne de l’objet, et le reste du programme n’a pas à changer tant que le résultat est le même (il peut être prouvé que le pilote et le test d’intégration). C’est un changement que je peux faire parce que j’a i trouvé un système meilleur et plus efficace, ou parce que j’ai implémenté le même système dans d’autres cadres PHP.
Parmi les avantages que j’ai décrits, il y a l’avantage de suivre le principe de la dépendance inverse. Mon ami Carl Alexander a un article sur ce concept super important que je recommande fortement de lire. Avec PSR, j’ai récemment écrit des articles sur l’utilisation de Pimple comme conteneur pour stocker des objets dans des endroits accessibles à l’échelle mondiale. Le conteneur a un PSR. Voyons comment créer un conteneur PSR – 11. Vous pouvez voir l’interface ici. Premièrement, nous avons besoin de l’interface que la norme exige que nous implémentons. Nous pouvons les installer en utilisant Composer:
Le compositeur a besoin de PSR \/ container et nous pouvons créer deux classes pour implémenter containerinterface et containerexceptioninterface fournies par PSR. Premièrement, nous créons une classe d’exception dont nous avons besoin pour compléter la classe conteneur. Cette exception est nécessaire parce que PSR a besoin de la méthode Container get () pour générer une exception qui implémente containerexceptioninterface. Par conséquent, notre mise en oeuvre finale pourrait être la suivante: <?php
funzione wp_return_two(){
ritorno 2;
}
funzione ritornoDue()
{
ritorno 2;
} La seconda opzione, che sarebbe in uno spazio dei nomi, quindi la mancanza di prefisso è OK, sembra sbagliata in WordPress e possiamo discutere se valga la pena la riga separata per la parentesi di apertura. Ma cosa succede quando aggiungiamo una dichiarazione del tipo di ritorno? Il tentativo di innestare questa funzionalità PHP7 nel modo WordPress è disordinato. Penso che sarebbe simile a questo:
<?php
funzione wp_return_two(): int {
ritorno 2;
} È molto meno leggibile rispetto al modo PHP: <?php
funzione returnTwo() : int
{
ritorno 2;
} Ancora una volta, non è un grosso problema in PHP5, ma se vuoi scrivere PHP moderno, questo è un problema. C'è una soluzione semplice: fallo nel modo PHP. E sì, significa camelCasing i tuoi nomi di funzioni e classi. Questo mi ha messo davvero a disagio quando ho iniziato. Mi sentivo come se chiunque avesse usato camelCase in WordPress non l'avesse capito o altro. Ora mi rendo conto che è più facile da leggere, occupa meno spazio e sembra meno fuori posto tra il codice che non è scritto per WordPress, che puoi usare quando è fatto bene.
Cos'è un PSR? Il gruppo PHP FIG è un comitato per gli standard per lo sviluppo di PHP. Il comitato include sviluppatori di base PHP e rappresentanti della maggior parte dei principali framework WordPress e CMS. WordPress non è rappresentato direttamente, per scelta, sebbene alcuni membri siano anche "persone di WordPress". PHP FIG pubblica “PSR”. Ogni PSR è una specifica per fare qualcosa con PHP e le relative interfacce o implementazioni di riferimento. Ad esempio, la PSR-4 stabilisce come denominare e organizzare le classi. PSR-4 fornisce anche un autoloader di esempio. La scrittura di codice che segue lo standard PSR-4 (o lo standard PHP-0 obsoleto) consente una facile integrazione con il gestore di pacchetti Composer di PHP.
Secondo gli standard di codifica di WordPress, PSR-4 e i PSR per lo stile di codifica, come PSR-2, sono sbagliati. Come semplice esempio è la denominazione della classe. Secondo WordPress, una classe che gestisce le opzioni si chiamerà WP_Options_Manager e verrà archiviata in class-wp-option-manager.php o utilizzerà un prefisso univoco per un plug-in o un tema, ad esempio Josh_Options_Manager. Seguendo i PSR, quella classe utilizzerà lo spazio dei nomi Josh\Options\Manger e verrà archiviata in src/Options/Manager o Josh\OptionsManager . Quindi, oltre ad avere ragione, poiché i PSR definiscono cosa è giusto nello sviluppo PHP, questa struttura spreca
Get (‘hiroy’);
Effectuer une action sur l’objet dans l’offset \
Capture (PSR \ container \ containerexceptioninterface $e) {
Poignée introuvable
} compte tenu de ce résultat final, tout d’abord, au spa
Oncle du nom du contenant, ajouter une exception: Projets);
}
Hériter du document
Fonction publique get ($ID)
{Y}
Si (! $this – > has ($ID)) {
Démarrer une nouvelle exception ();
}
Retourner $this – > get $ID;
}
J’implémente les méthodes get () et has () nécessaires pour contrôler l’accès aux tableaux d’éléments internes qui permettent à cette classe d’agir comme conteneur d’éléments. Dans la vraie vie, je pourrais emballer l’acné parce qu’il a des outils utiles comme Object Factory. En fait, si vous voulez savoir exactement comment j’écris un conteneur compatible PSR qui peut interopérer entre WordPress et d’autres cadres PHP, vous pouvez voir cette classe de conteneur abstrait et sa mise en œuvre concrète. En apprenant PHP et Javascript dans un contexte non WordPress, j’ai beaucoup appris sur le développement de WordPress en utilisant PHP et JavaScript. Apprenez Angular, vuejs, laraver, Symfony, etc. J’ai appris beaucoup de grands plans et stratégies à utiliser dans WordPress. Bien sûr, il est dangereux de ne pas suivre WordPress. Réduire les risques d’interopérabilité avec wordpress est un véritable danger avec des conséquences pratiques. L’augmentation de la complexité du Code est un risque, avec de nombreux inconvénients potentiels. C’est pourquoi il n’est nécessaire de s’écarter du mode WordPress que si les avantages sont tangibles, non seulement parce qu’il est « plus standard», mais aussi parce que le résultat final est meilleur. Personnellement, j’ai découvert que dans de nombreux cas, nous pouvons le faire de deux façons: écrire le Code en PHP, écrire le Code en termes de style et de modèles, et toujours utiliser l’api WordPress correcte pour que le code fonctionne bien avec le reste de WordPress. C’est ce que font les bonnes normes: elles encouragent le code à fonctionner correctement sur toutes les plateformes.