Objektorienterad programmering i WordPress Typer

För dem som just startar den här serien noterar vi att vi tittar på objektorienterad programmering med PHP inom ramen för WordPress.

Målgruppen

Vi gör det från perspektivet av mycket nybörjare, så om du är en erfaren utvecklare, eller är bekant med många av aspekterna av objektorienterad programmering, så är den här serien förmodligen inte för dig.

Med det sagt, om du är intresserad av att lära sig objektorienterad programmering i PHP och du anser dig själv nybörjare, så fortsätter vi serien i den här artikeln genom att prata om några av de datatyper som PHP erbjuder.

Men först, se till att du har fastnat på de tidigare artiklarna i serien som de bygger på varandra:

  1. Introduktion
  2. Klasser

När du är helt upptagen kan vi börja prata om typer.

Vad är typer?

Vi avslutade den sista artikeln med följande:

Vi kommer till det, men först måste vi diskutera några av de mer primitiva aspekterna av programmering som strängar, arrays, loopar och conditionals.

Nu är strängar, arrays och så vidare vad vi anser vara typiska. Loops och conditionals är så kallade kontrollstrukturer som vi kommer att täcka i nästa artikel.

Så under tiden får vi komma fram till en enkel term för vad en datatyp representerar så att vi vet hur man begreppsmässigt ska modellera dem framåt inte bara med den här artikeln utan med resten av innehållet i serien.

För alla som har skrivit några kod som innehåller variabler, så har du sannolikt verkade något som följande:

  • $ name = 'Tuts + WordPress';
  • $ is_active = true;
  • $ ålder = 42;
  • … och så vidare.

I den mest grundläggande formen kommer du sannolikt att höra ovanstående kod definieras som variabler med definitioner, och det är korrekt, men det är en mycket generaliserad definition.

Du ser, när du definierar en variabel i PHP, så gör du genom att prefixera variabeln med $. Detta gör att PHP vet att du definierar en variabel och att den kommer att representera ett typiskt värde.

Lätt nog, höger?

Saken är, det finns olika typer i PHP. För dem som kommer från så kallade "starkt skrivna språk" talar vi om det mer tillfälligt, men vet att PHP erbjuder följande datatyper:

  • booleska
  • heltal
  • flytande punktnummer
  • strängar
  • arrayer
  • objekt
  • … och mer

Allt från booleaner via strängar kan betraktas som en enkel datatyp, där som arrays och objekt kan anses vara mer komplexa datatyper.

Enkla datatyper

Enkla datatyper definieras som sådana eftersom de data de representerar är, vet du inte, enkel. Det vill säga att det normalt kommer att falla under bannern av sanna, falska, decimaler och ord och / eller meningar.

För att ge konkreta exempel på var och en av ovanstående:

  • Boolesiska värden är avsedda att hålla värdet på Sann eller falsk.
  • Heltal hänvisar till några heltal. Det vill säga att det inte innehåller några fraktioner eller decimalkomponenter till den. Detta inkluderar nummer som -12, -2, 1, 100, 5000, och så vidare.
  • Floating Point Numbers är typ av motsatsen till helheter i det att de do representerar värden med fraktionerade delar. Så, till exempel, kan du se 3,1459, 2,5, 100,25, och så vidare. Om du skulle försöka spara värdet på, säg, 3/4 då skulle du faktiskt spara .75 såvida inte du räddade det som en sträng. Det var, du skulle spara '3/4'. Lägg märke till den subtila avgränsningen mellan de två? Man har citat och man gör det inte.
  • Talar om strängar representerar strängar ett enskilt ord eller en uppsättning alfanumeriska tecken som utgör en serie bokstäver och siffror. Det här kan vara ett enda ord, det kan vara meningen, det kan vara meningar, och det kan vara en slumpmässig serie tecken som en krypterad sträng. Exempel på strängar inkluderar "fraser som detta" eller en singel 'ord' eller till och med något mer komplext som 'E952098vjdkw94kd'

Här är fångsten, men någon av ovanstående datatyper kan omvandlas till strängar genom att omslaga dem i citattecken.

Men det finns en fångst

Om du till exempel skulle arbeta med det booleska värdet av, säg sant, men du skulle lagra det i en variabel så här: $ is_active = 'true'; då har du faktiskt bara skapat en sträng som läser Sann.

På samma sätt, om du skulle skriva en sträng som läser $ ålder = '42'; då har du skapat en sträng som innehåller numret 42inte ett heltal.

Vettigt?

Anledningen till att detta är viktigt är att när det är dags att arbeta med kontrollstrukturer, som vi kommer att se över i nästa artikel, är det ibland att körför jämförelse kan få oavsiktliga konsekvenser om du inte är säker som datatyp som du arbetar med.

Komplexa datatyper

Förutom enkla datatyper har vi också komplexa datatyper som enligt min mening inte är riktiga den där komplicerad. Faktum är att jag tycker om det som ett fint sätt att säga att vi har sätt att lagra flera bitar av information till en enda variabel; Med enkla typer har vi ett sätt att lagra enskilda bitar av information i en enda variabel.

Ganska lätt att komma ihåg, eller hur? Så vad är några av de mer komplexa datatyperna?

De två primära komplexdatatyper som vi kommer att fokusera på i denna serie som arrays och objekt. Det finns fler, men de ligger utanför ramen för denna serie, så om du är intresserad, ta gärna en titt på PHP-manualen, men jag varnar dig: om du är en absolut nybörjare kan innehållet känna lite överväldigande.

  • Arrayer är sätt att lagra flera bitar av information till en samling. Tänk på ett ögonblick att du har en uppsättning namn som du vill lagra till en samling som är lämpligt kallad $ namn. I PHP skulle du definiera en array och tilldela den till en variabel så här: $ names = ['John', 'Paul', 'Ringo', 'George']; Observera här att vi har en rad strängar, men en annan aspekt av PHP-arrays är att de kan hålla flera datatyper. Det betyder att du kan ha en matris som ser ut som $ various_types = [42, TRUE, 'Star Wars', .007];. Kinda cool, rätt?
  • Associativa Arrays är precis som vanliga arrays som vi ser om förutom att de är gjorda av nyckelvärdespar. Det betyder att varje värde hämtas av en nyckel, så om vi skulle konvertera den första matrisen till en associativ array så kan det se ut så här: array ('rytmgitarr' => 'John', 'bass' = ' > 'Paul', 'lead-gitarrist' => 'George', 'drums' => 'Ringo'); Om formatet ser ut som konstigt just nu, oroa dig inte om det! Vi kommer att titta på dessa i mycket mer detalj senare i serien. Den primära ta bort är att standardraderna är index numeriskt - det vill säga, 0, 1, 2, 3, och så vidare - och tillhörande arrays indexeras av deras nycklar som 'rytm gitarr', 'trummor', och så vidare.
  • Objekt som vi berörde förra gången är förmodligen det mest komplexa av de datatyper som PHP erbjuder, eftersom de är en kombination av allt. Deras attribut består av datatyper eller till och med andra objekt, de är funktioner, och de utför operationer inte bara på andra enkla datatyper utan även på komplexa datatyper.

När det gäller föremål som berörs, är det bästa sättet att se hur komplicerat de kan få, att se dem i åtgärd, vilket vi kommer att vara säkra på när vi bygger ett plugin.

En anteckning om arrays

Observera att på vissa språk måste storleken på arrayen deklareras innan du faktiskt kan använda den. Till exempel i C måste du berätta för kompilatorn att matrisen kommer att hålla exakt, säg 10 värden.

I fallet med PHP är detta inte fallet. PHP-arrayen är dynamisk vilket innebär att du kan fortsätta lägga till data i arrayen utan att behöva öka storleken. Ja, som med något, finns det gränser, men det brukar relateras till storleken på de data som lagras, eller hur mycket minne som en maskin har tillgänglig.

Låt inte fraserna skrämma dig!

Men för tillfället, låt inte orden enkel och komplex skrämma dig. Beviljas, "enkel" är relativt enkelt, eller hur? Men "komplex" har denna konnotation att det blir svårt att förstå, och det är inte sant - förhoppningsvis visar den här artikeln att.

Komplexa datatyper kan enkelt hålla flera bitar av data. Enkla datatyper kan inte.

Finns det mer?

Ja det finns. Namnlösa: resurser, callbacks och pseudo-typer. De flesta av dessa är inte tillgängliga för denna serie. dock vi Maj sluta använda callbacks (som är en viss typ av funktioner) senare när vi börjar bygga vårt plugin.

Ta gärna upp dem så mycket som möjligt, men vet att de ligger utanför innehållets omfattning som vi kommer att täcka genom den här serien, så om du känner dig överväldigad av dem, kanske kolla dem igen när serien är klar.

Ett ord om starkt typade språk

Vissa programmeringsspråk är kända vad som är dynamiskt typat (eller svagt typat) där som andra är kända som starkt typade språk.

Det här är ett annat fall där terminologin ofta hotar nya programmerare snarare än att ge dem möjlighet att veta hur man använder de verktyg som finns tillgängliga, men de kännetecknande faktorerna mellan de två är verkligen ganska enkla:

  • Starkt typade språk betyder att variablerna först måste deklareras som en viss typ och de kan endast Håll en viss typ av data. Om jag till exempel vill hålla en sträng, skulle jag förklara variabeln som sträng sMyName; Då skulle jag lagra en sträng i variabeln. sMyName = 'Tom McFarlin';. Detta innebär att sMyName variabel burk endast håll strängar. Om du försöker lagra en annan datatyp i den variabeln kommer kompilatorn att kasta ett fel.
  • Dynamiskt typade språk, som PHP, tillåter en enda variabel att innehålla flera typer vid vilken som helst given punkt. Genom att använda exemplet ovan kunde jag lika enkelt säga$ my_name = 'Tom McFarlin'; som jag kunde $ my_name = false.  Om du försöker lagra en annan datatyp i den variabeln fungerar det bra. Du kan se att detta har båda fördelarna som nackdelar.

Var till nästa?

Innan vi återvänder till objektorienterad programmering måste vi prata om några ytterligare grundläggande strukturer för programmering, såsom kontrollstrukturer. 

Dessa inkluderar saker som loopar, conditionals, och så vidare som kan påverka flödet av kod under hela programmets livstid. Dessutom arbetar de hand i hand med de datatyper som vi har skisserat här.

Så innan vi går in i nästa artikel, se till att du granskar allt som händer här, lämna kommentarer, frågor och feedback i kommentarfältet.

 Jag ser dig i nästa artikel!