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 jrsquoai appris comment développer des plug ins en tant que représentant de support et développeur pour le cadre des pods, jrsquoai 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 drsquoaccord, sauf si 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 lrsquointermédiaire de lrsquoé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 lrsquointerface, ce qui signifie que je peux changer la partie interne de lrsquoobjet, et le reste du programme nrsquoa pas à changer tant que le résultat est le même (il peut être prouvé que le pilote et le test drsquointégration). Crsquoest un changement que je peux faire parce que jrsquoa i trouvé un système meilleur et plus efficace, ou parce que jrsquoai implémenté le même système dans drsquoautres cadres PHP.
Parmi les avantages que jrsquoai décrits, il y a lrsquoavantage 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, jrsquoai récemment écrit des articles sur lrsquoutilisation de Pimple comme conteneur pour stocker des objets dans des endroits accessibles à lrsquoéchelle mondiale. Le conteneur a un PSR. Voyons comment créer un conteneur PSR 11. Vous pouvez voir lrsquointerface ici. Premièrement, nous avons besoin de lrsquointerface 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 drsquoexception 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: lt?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:
lt?php
funzione wp_return_two(): int {
ritorno 2
} È molto meno leggibile rispetto al modo PHP: lt?php
funzione returnTwo() : int
{
ritorno 2
} Ancora una volta, non è un grosso problema in PHP5, ma se vuoi scrivere PHP moderno, questo è un problema. C039è 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 l039avesse 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.
Cos039è 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 quotpersone di WordPressquot. 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 JoshOptionsManger e verrà archiviata in srcOptionsManager o JoshOptionsManager . Quindi, oltre ad avere ragione, poiché i PSR definiscono cosa è giusto nello sviluppo PHP, questa struttura spreca
Get (lsquohiroyrsquo)
Effectuer une action sur lrsquoobjet dans lrsquooffset
Capture (PSR container containerexceptioninterface $e) {
Poignée introuvable
} compte tenu de ce résultat final, tout drsquoabord, au spa
Oncle du nom du contenant, ajouter une exception: Projets)
}
Hériter du document
Fonction publique get ($ID)
{Y}
(! $this gt has ($ID)) {
Démarrer une nouvelle exception ()
}
Retourner $this gt get $ID
}
Jrsquoimplémente les méthodes get () et has () nécessaires pour contrôler lrsquoaccès aux tableaux drsquoéléments internes qui permettent à cette classe drsquoagir comme conteneur drsquoéléments. Dans la vraie vie, je pourrais emballer lrsquoacné parce qursquoil a des outils utiles comme Object Factory. En fait, si voulez savoir exactement comment j’écris un conteneur compatible PSR qui peut interopérer entre WordPress et d’autres cadres PHP, 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. Lrsquoaugmentation 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. Crsquoest ce que font les bonnes normes: elles encouragent le code à fonctionner correctement sur toutes les plateformes.
Ne suivez pas les normes de codage WordPress