In deze serie hebben we een diepe duik genomen in de coderingsstandaarden van WordPress om het nieuws over hen te vernemen, te begrijpen en praktisch toe te passen in ons dagelijkse werk.
Als je net meedoet met de serie, hebben we tot nu toe de volgende onderwerpen behandeld:
In dit artikel gaan we verder werken aan de top van de inhoud in het vorige artikel: Concreet gaan we kijken naar accolades, reguliere expressies en nuances van het werken met PHP-tags in de context van WordPress-thema's, plug-ins en applicaties bouwen.
In deze hele reeks is een van de problemen die we herhaaldelijk hebben herhaald, dat coderingsstandaarden helpen om code leesbaarder en onderhoudbaarder te maken en dat ze uiteindelijk eruit moeten zien als één ontwikkelaar de code heeft geschreven.
Maar een van de dingen waar we eigenlijk niet veel over gesproken hebben, is waarom stijl zaken. Ten eerste roept dit echter de vraag op: wat is het verschil tussen stijl en coderingsconventies?
Eerlijk gezegd denk ik dat sommigen zouden zeggen dat er geen verschil is - ze zouden zelfs zeggen dat ze synoniem zijn. Ik ben het niet noodzakelijk eens. Persoonlijk is de manier waarop ik het altijd heb bekeken, de coderingsnormen bepalen de stijl van de code die wordt geschreven. Coderingsstandaarden zijn de conventies waarmee we onze code vormgeven.
Laten we dus, met dat gezegd, ons gesprek over coderingsconventies hervatten door te kijken naar hoe de WordPress coderingsstandaarden het gebruik van accolades definiëren.
Over het algemeen zijn de regels eenvoudig:
Deze principes worden vaak het beste gedemonstreerd in code. De eerste twee zijn eenvoudig:
// Enkele regel voorwaardelijke voorbeelden if (voorwaarde1) do_work (); if (voorwaarde1) do_work (); else dont_do_work (); // Multiline-conditionals if (voorwaarde1) do_work (); do_more_work (); else dont_do_work (); seriously_be_lazy (); // Single Line loops (true voor doen / while, while, for en foreach) while (condition1) dont_stop_believing (); // Single Line-loops (true voor do / while, while, for en foreach) while (condition1) dont_stop_believing (); hold_on_to_that_feeling ();
Niets erg ingewikkelds, toch?
In feite kun je zien dat ik methoden heb gebruikt in de bovenstaande blokken. Dat is wat ons naar ons volgende principe leidt: als je een te gecompliceerd lichaam in je voorwaardelijke hebt, zal dit waarschijnlijk helpen om de conditionele voor een betere leesbaarheid te refactoren.
Laten we een voorbeeld bekijken.
In dit voorbeeld gaan we de metagegevens van de huidige gebruiker doorlopen en als de meta-sleutel van de huidige gebruiker de subtekenreeks 'destroy:' bevat, verwijderen we de metasleutel van die gebruiker.
Merk in dit voorbeeld op dat al dit werk wordt gedaan in een voorwaardelijke, in een foreach
loop, en vervolgens in een andere voorwaardelijke.
// Als voorwaarde 1 waar is ... als (voorwaarde1) // ... dan de gebruikers-metadata voor de huidige gebruiker voor elk (get_user_meta (wp_get_current_user () -> ID) als $ meta_key => $ meta_value) // Als gebruiker heeft een vernietigingswaarde ingesteld, verwijder deze. Dit betekent dat ze ervoor hebben gekozen om een gebruiker niet te verwijderen. if (strstr ($ meta_key, 'destroy:')) delete_user_meta (wp_get_current_user () -> ID, $ meta_key);
Veel geneste code, toch?
Er zijn verschillende manieren waarop dit kan worden aangepast. Sommige ontwikkelaars gaan zelfs zo ver als elk blok te nemen en het te abstraheren naar zijn eigen methode - daar is niets mis mee,.
Maar om dit punt te demonstreren, bieden we slechts één niveau van abstractie: we gaan de cirkel en het innerlijke voorwaardelijke, verplaatsen naar een functie die een gebruiker accepteert en vervolgens de originele actie uitvoeren.
// Als voorwaarde 1 waar is ... if (voorwaarde1) process_user (wp_get_current_user ()); function process_user ($ user) // Verkrijg de gebruikers meteta-gegevens voor de huidige gebruiker voor elk (get_user_meta ($ user-> ID) als $ meta_key => $ meta_value) // Als gebruiker een vernietigingswaarde heeft ingesteld, verwijder deze dan . Dit betekent dat ze ervoor hebben gekozen om een gebruiker niet te verwijderen. if (strstr ($ meta_key, 'destroy:')) delete_user_meta ($ user-> ID, $ meta_key);
Zoals ik al zei, dit is een relatief eenvoudig voorbeeld, maar het punt blijft: het verplaatsen van een groot blok van een code naar zijn eigen, gespecialiseerde functie kan een lange weg bieden om het voorwaardelijke te refactiveren, zodat het gemakkelijker te lezen is.
Op dit punt gaan we iets schakelen en praten we kort over reguliere expressies. Als u niet bekend bent met reguliere expressies, weet u gewoon dat dit krachtige manieren zijn om teken- of tekenreeksmatching uit te voeren. Je kunt er veel meer over lezen op Wikipedia.
Op een bepaald moment tijdens je ontwikkelingscarrière van WordPress kom je ze waarschijnlijk tegen - hetzij in de broncode, de code van het thema of de plug-in, of zelfs nodig om een actie uit te voeren in je eigen project.
Gelukkig biedt PHP een aantal hele simpele, echt krachtige functies voor het gebruik van reguliere expressies in je code; Er zijn echter wel degelijk en oneigenlijk gebruik van als het gaat om het werken met hen in WordPress.
Dit zijn de algemene regels:
preg
functies die PHP biedt\ e
schakelaar die aangeboden wordt door PHP - gebruik preg_replace_callback
in plaats daarvan.Voor degenen die nieuwsgierig zijn, zijn er een aantal functies die beschikbaar zijn.
Ik raad u bijvoorbeeld aan vertrouwd te raken met:
preg_replace
preg_match
preg_match_all
Tenslotte, preg_replace_callback
is een manier om een functie aan te roepen wanneer een reguliere expressie een overeenkomst heeft gevonden.
Vanzelfsprekend zijn de regels voor reguliere expressies in WordPress eenvoudig - het is meer een kwestie van de functies kennen die jij bent moeten gebruik en wat u niet moet gebruiken en hoe u ze kunt gebruiken in uw dagelijkse werk.
Het laatste dat in dit artikel wordt behandeld, is het belang van het gebruik van PHP-tags in de PHP-bestanden waaruit uw project bestaat. Gelukkig is er een heel eenvoudige vuistregel voor deze specifieke situatie:
Eerst en vooral betekent dit dat je nooit een bestand of een inline PHP-statement mag openen of met
=
. Uiteraard moeten alle inline PHP-uitspraken nog steeds worden beëindigd met de ?>
afsluitende tag.
Nu is dit volgende onderwerp een beetje een afwijking van de coderingsnormen, althans op het moment van dit schrijven is het een meer algemene praktijk geworden om de afsluitende tag van de onderkant van het bestand te laten staan als en alleen als de eerste regel van het bestand in kwestie is een opening label.
Dit komt met name vaker voor in de context van plug-ins dan in thema's en daarom: PHP is een manier waarop server-side code kan worden ingesloten in front-end markup. Als zodanig heeft het zowel een openingstag als een afsluitende tag nodig, zodat de interpreter de code kan ontleden.
Maar als u een plug-in of een toepassingsbestand schrijft dat 100% PHP is, hoeft u aan het einde van het bestand geen afsluitende tag toe te voegen. De parser zal het zelf kunnen detecteren, en als jij do een afsluitende tag bevatten, dan kun je mogelijk witruimte overhouden aan het einde van het bestand die allerlei problemen kan veroorzaken als het tijd is om de plug-in te activeren.
Dus naast de coderingsstandaard die hierboven is gedefinieerd, zou ik ook toevoegen:
Naarmate we de laatste hand leggen aan de bespreking van de WordPress-coderingsnormen, zullen we ons gaan concentreren op kleinere dingen zoals ternaire operatoren en Yoda-voorwaarden; We zullen echter ook kijken naar de fijnere punten van het uitvoeren van inline SQL-query's en de belangrijke regels daarrond.
Als je de serie nog niet hebt ingehaald, is het nu een goed moment om terug te lezen wat we hebben besproken, voor zover het gaat bijdragen aan de richting van de volgende reeks artikelen..