WordPress kodning Standards Braces, Regular Expressions och PHP Tags

I denna serie har vi tagit ett djupt dykk i WordPress Coding Standards för att få ordet ut om dem, förstå dem och börja praktiskt tillämpa dem i vårt dagliga arbete.

Om du bara går med i serien har vi hittills täckt följande ämnen:

  • Namngivna konventioner och funktionsargument
  • Enkla citat och dubbla citat
  • Inryckning, utrymmeanvändning och bakomliggande utrymmen

I den här artikeln kommer vi att fortsätta bygga ovanpå innehållet i föregående artikel: Speciellt ska vi titta på brace-stil, vanliga uttryck och nyanser att arbeta med PHP-taggar inom ramen för bygga WordPress-teman, plugins och applikationer.


Varför Style Matters

Under den här serien är en av de problem som vi har upprepat om och om igen, att kodningsstandarderna hjälper till att göra koden mer läsbar, underhållbar och att de i slutändan skulle få det att se ut som en utvecklare har skrivit koden.

Men en av de saker som vi inte faktiskt talat mycket om är varför stil frågor. För det första ökar detta frågan: Vad är skillnaden mellan stil och kodningskonventioner?

Ärligt talat tror jag att vissa skulle säga att det inte är någon skillnad - de skulle faktiskt säga att de är synonyma. Jag håller inte nödvändigtvis med. Personligen är det sättet som jag alltid sett på det att kodningsstandarderna definiera stilen på koden som skrivs. Kodningsstandarder är de konventioner genom vilka vi stämmer överens med vår kod.


Brace Style

Så med det sagt, låt oss återuppta samtalet om kodningskonventioner genom att titta på hur WordPress Coding Standards definierar användningen av hängslen.

Generellt sett är reglerna enkla:

  • Enkellinjeblock kan utelämna klammer
  • Multiline-block bör alltid innehålla hängslen
  • När du har överdriven multiline conditionals, överväga att bryta upp conditionalsna i sina egna funktioner för att minimera blocket

Dessa principer visas ofta bäst i kod. De två första är enkla:

 // Enkel linje villkorade exempel om (condition1) do_work (); om (villkor1) do_work (); annars dont_do_work (); // Multiline conditionals if (condition1) do_work (); do_more_work ();  annat dont_do_work (); seriously_be_lazy ();  // Enstaka linjelösningar (sant för gör / medan, för, och förut) medan (condition1) dont_stop_believing (); // Enstaka linjelösningar (sant för gör / medan, för, och förut) medan (villkor1) dont_stop_believing (); hold_on_to_that_feeling (); 

Inget hemskt komplicerat, rätt?

Faktum är att du kan se att jag använde metoder i blocken ovan. Det som leder oss till vår nästa princip: Om du har en alltför komplicerad kropp i din villkorliga, kommer det sannolikt att hjälpa till att refactor den villkorade för lättare läsbarhet.

Låt oss ta en titt på ett exempel.

Innan

I det här exemplet kommer vi att iterera genom metadata för den aktuella användaren, och om den nuvarande användarens metatangent har substringet "förstör:" tar vi bort den användarens metatangent.

Observera i det här exemplet att allt detta arbete görs på villkorligt sätt i en för varje loop, och sedan i en annan villkorlig.

 // Om villkor1 är sant ... om (villkor1) // ... får användaren metadata för den nuvarande användaren (get_user_meta (wp_get_current_user () -> ID) som $ meta_key => $ meta_value) // Om användaren har ett förstörande värde set, radera det. Det innebär att de valde att inte radera en användare. om (strstr ($ meta_key, 'destroy:')) delete_user_meta (wp_get_current_user () -> ID, $ meta_key); 

Massor av kapslad kod, höger?

Efter

Det finns en mängd olika sätt att detta kan refactored. Faktum är att vissa utvecklare kommer att gå så långt som att ta varje block och abstrahera det till sin egen metod - det är inget fel med det, antingen.

Men för att visa denna punkt kommer vi bara att ge en nivå av abstraktion: Vi ska ta loopen och det inre villkorat, flytta det till en funktion som accepterar en användare och sedan utföra den ursprungliga åtgärden.

 // Om villkor1 är sant ... om (villkor1) process_user (wp_get_current_user ());  funktion process_user ($ user) // Få användaren att mäta data för den aktuella användarens förhand (get_user_meta ($ user-> ID) som $ meta_key => $ meta_value) // Om användaren har ett förstöringsvärde satt, radera det . Det innebär att de valde att inte radera en användare. om (strstr ($ meta_key, 'destroy:')) delete_user_meta ($ user-> ID, $ meta_key); 

Som jag sa är det här ett relativt enkelt exempel, men punkten förblir: Att flytta ett stort block av en kod till sin egen specialiserade funktion kan gå långt för att reflektera den villkorliga så att den är lättare att läsa.


Vanliga uttryck

Vid denna tidpunkt kommer vi att flytta växlarna lite och prata kort om reguljära uttryck. Om du inte är bekant med reguljära uttryck, vet bara att de är mäktiga sätt att utföra karaktär eller strängmatchning. Du kan läsa mycket mer om dem på Wikipedia.

Vid någon tidpunkt under din WordPress-utvecklingskarriär kommer du sannolikt att stöta på dem - antingen i kärnkodskoden, koden för tema eller plugin eller ens att de behöver göra en åtgärd i ditt eget projekt.

Lyckligtvis erbjuder PHP några riktigt enkla, riktigt kraftfulla funktioner för att använda regelbundna uttryck i din kod. Det finns dock korrekta och felaktiga användningar av dem när det gäller att arbeta med dem i WordPress.

Här är de allmänna reglerna:

  • Använd preg funktioner som PHP erbjuder
  • Använd inte \ e switch som erbjuds av PHP - använd preg_replace_callback istället.

För de som är nyfikna finns det ett antal funktioner som är tillgängliga.

Till exempel rekommenderar jag att jag är bekant med:

  • preg_replace
  • preg_match
  • preg_match_all

Till sist, preg_replace_callback är ett sätt att ringa en funktion när ett vanligt uttryck har funnit en matchning.

Självklart är reglerna för regelbundna uttryck i WordPress enkla - det är mer en fråga om att känna till de funktioner som du skall använd och vad du inte ska använda, och hur man använder dem i ditt dagliga arbete.


PHP-taggar

Det sista som ska täckas i den här artikeln är vikten av hur man använder PHP-taggar i de PHP-filer som utgör ditt projekt. Lyckligtvis finns det en mycket enkel tumregel för denna speciella situation:

  • Använd aldrig shorthand PHP-taggar

Först och främst betyder det att du aldrig ska öppna en fil eller en inline PHP-uppsats med eller med . Naturligtvis bör alla inline PHP-uttalanden fortfarande avslutas med ?> stängande tagg.

Nu är det här nästa ämnet en bit av en avvikelse från kodningsstandarderna, åtminstone vid tidpunkten för det här skrivandet blir det en vanligare övning att lämna den avslutande taggen av botten av filen om och endast om Den första raden i den aktuella filen är en öppning märka.

Specifikt är detta vanligare i samband med plugins än det är i teman och här är varför: PHP är ett sätt på vilket serverns sidkod kan inbäddas i front-end-markup. Som sådan kräver det både en öppningsmärke och en stängande tagg så att tolken vet hur man analyserar koden.

Men om du skriver ett plugin eller en applikationsfil som är 100% PHP, så behöver du inte lägga till en avslutande tagg i slutet av filen. Parsern kommer att kunna detektera sig själv, och om du do inkludera en avslutande tagg, då kan du eventuellt ha blankutrymme kvar i slutet av filen som kan orsaka alla möjliga problem när det kommer dags att aktivera plugin.

Så förutom den kodningsstandard som definieras ovan lägger jag till också:

  • Undvik att lägga till en avslutande PHP-tagg i rena PHP-filer.

Slutsats

När vi stänger in på den sista sträckan att granska WordPress-kodningsstandarderna börjar vi fokusera på mindre saker som ternära operatörer och Yoda-förhållanden. Vi tar dock också en titt på de finaste punkterna för att utföra inline SQL-frågor och de viktiga reglerna kring det.

Om du inte redan har tagit upp serierna, är det nu dags att läsa tillbaka genom det vi har täckt så långt det kommer att leda till var vi är på väg med nästa uppsättning artiklar.