När vi fortsätter vår diskussion om objektorienterad programmering inom ramen för WordPress, är det dags för oss att börja prata om faktiska funktioner i objektorienterad programmering.
Även om vi redan har täckt klasser, behövde vi utforska några grundläggande programmeringsstrukturer innan vi kom tillbaka till några av de kärnobjektorienterade koncepten.
I den här artikeln ska vi börja prata om funktioner och attribut: två grundläggande aspekter av objektorienterad programmering. Men först, se till att du alla är fastnade i de tidigare artiklarna:
En av de punkter som jag skulle vilja upprepa om den här serien är att vi arbetar med att granska objektorienterad programmering inom WordPress-sammanhanget med utgångspunkt från de absoluta fundamentella aspekterna av programmering.
Vi gör detta för att se till att de som är nybörjare till programmering har allt de behöver för att inte bara komma igång med programmering utan också att lära sig paradigmet och till slut arbeta för att bygga ett WordPress-plugin.
Med det sagt, låt oss återuppta vår diskussion genom att prata om funktioner och attribut.
För dem som är bekanta med procedurprogrammering är du utan tvekan bekant med funktioner - trots allt är de hur du får jobb, rätt?
Men för dem som bara hoppar in i programmeringen finns det två saker att förstå om funktioner:
Till den andra punkten är det sant att mycket av det vi diskuterade förut - det vill säga variabler, conditionals, loopar och så vidare - är ansvariga för att slutföra en enhetsenhet också; men alla arbetar tillsammans med varandra för att uppnå något något större än dem själva.
Beroende på språket kan du också höra dessa kallas metoder eller rutiner. Oavsett vilken terminologi som används, är poängen att funktioner använder grundkonstruktioner för att slutföra en åtgärd.
Funktioner kan också fungera på tre sätt:
Vi tar en titt på var och en av dessa scenarier mer detaljerat på ett ögonblick, och i en kommande artikel kommer vi att se hur de fungerar i klassen. För nu, låt oss ta en titt på hur funktioner fungerar inom PHP och flera nyanser om var och en av dem.
Påminnelse från föregående avsnitt om att det finns tillfällen där vi kan definiera funktioner som inte accepterar någon inmatning och heller inte returnerar någon information.
I det här fallet kommer dessa typer av funktioner normalt att utföra en viss typ av operation (till exempel uppdatering av ett alternativ i databasen) och de kommer att åberopas av en annan funktion efter en viss operation har slutfört.
Så, till exempel, låt oss säga att vi har en funktion som vi vill använda för att uppdatera den underliggande WordPress-databasen. Detta kräver att vi känner till flera saker:
update_option
I vårt fall säger vi att vi vill uppdatera ett värde i databasen som identifierats av blog_last_updated
nyckel. Då använder vi PHP-funktionen tid()
för att lagra tiden när funktionen kallas.
Med det sagt, låt oss definiera vår funktion:
Baserat på beskrivningen som vi har angivit ovan kan du se att funktionens kropp använder sig av
update_option
WordPress API-funktionen med den angivna nyckeln och det värde som vi beskrev.Detta kan sedan åberopas av en annan kod genom att helt enkelt ringa
set_blog_updated ();
.Argument
Funktioner som inte accepterar argument kan bara vara användbara upp till en viss nivå. Vid något tillfälle måste du kunna skicka information till en funktion så att den kan utföra någon typ av beräkning, operation eller utvärdering av informationen.
I enlighet med vårt exempel ovan, låt oss säga att vi fortfarande vill uppdatera databasen med en tidsstämpel, men endast om en viss nyckel passeras in i funktionen. annars kommer vi inte göra någonting.
Observera att funktions signaturen - det vill säga namnet på funktionen och data i parentes - har uppdaterats för att acceptera en variabel som hänvisas till av
$ key
.Därefter använder funktionen ett villkor för att kontrollera att värdet på variabeln är lika med den för den nyckel som vi tittade på i den första versionen av funktionen. För att göra en enkel jämförelse sänker den värdet av
$ key
genom att använda PHPstrtolower
fungera.Det betyder att vi kan åberopa funktionen på följande sätt och fortfarande ha den uppdatering:
set_blog_updated ('BLOG_LAST_UPDATED');
set_blog_updated ('Blog_Last_Updated');
set_blog_updated ('blog_last_updated');
Alla ovanstående funktionssamtal kommer att utföra följande åtgärd; Om vi skulle vidarebefordra något annat till funktionen skulle den villkorliga utvärdera till falsk
och skulle inte brand uppdateringsfunktionen.
Till exempel ringer set_blog_updated ('not_now');
skulle inte arbete.
Låt oss nu säga att vi vill ha den funktion som vi arbetar för att returnera ett värde. Låt oss särskilt säga att vi ville återställa ett värde om huruvida uppdateringsfunktionen avfyras eller inte.
För att göra detta kan vi dra nytta av en funktion lämna tillbaka
uppgift samt det värde som funktionen update_option returnerar. Enligt WordPress Codex, update_option
kommer att returnera följande:
Sant om alternativvärdet har ändrats, falskt om inte eller om uppdateringen misslyckades.
För det ändamålet kan vi justera vår funktion för att fungera så här:
Nu har vi en funktion som accepterar ett argument, returnerar ett värde och använder också en villkorlig inte bara för att uppdatera värdet utan också för att säkerställa att värdet uppdaterades.
Med tanke på funktionen ovan kan vi åberopa det som vi har i tidigare exempel, men nu kan vi lagra det resulterar i en variabel som gör det möjligt för oss att ytterligare förbättra koden i vårt program.
Till exempel kan vi fortsätta ringa funktionen genom att säga
set_blog_last_updated ('blog_last_updated');
men nu kan vi också lagra resultatet av funktionen i en variabel.För att göra detta behöver vi bara skriva en kodkod som utför följande:
$ blog_was_updated = set_blog_last_updated ('blog_last_updated');
I detta fall är variabeln$ blog_was_updated
kommer att ställas in påSann
om villkoret pågick och uppdateringssamtalet lyckades, men det kommer att blifalsk
om villkoret inte körde eller om det körde men detupdate_function
misslyckades.Variabellängd Argument
Det finns en annan aspekt av funktioner som ligger utanför ramen för den här artikeln och det är argument med variabel längd. Kort sagt, det finns ett sätt att en funktion kan acceptera ett antal argument som vi inte kan förutse när du skriver kod.
Om du är intresserad av att läsa framåt kan du kolla in artikeln i PHP-handboken. Vi ser dock att täcka detta senare i serien.
attribut
Vid denna tidpunkt ska vi flytta växlar och prata om något som är rent relaterat till objektorienterad programmering och det är klassattribut.
Minns från vår diskussion om klasser att vi tittade på en provklass för en
Blog_Post
. Som referens såg koden ut så här:klass Blog_Post privat $ författare; privat $ publish_date; privat $ is_publicerad; public function publicera () // Publicera artikeln här public function delete () // Radera artikeln härVid denna punkt i serien bör du enkelt kunna identifiera klassdefinitionen, funktionsdefinitionen och attributen.
Specifikt är attributen de tre variablerna som finns längst upp i filen ovanför funktionerna. Som anges i artikeln om klasser kan attribut anses som adjektiv som beskriver klassen.
I exemplet ovan har vi en klass som representerar ett blogginlägg, och ett blogginlägg kan beskrivas av författaren, dess publiceringsdatum och huruvida det har publicerats eller ej.
Dessa specifika värden är inget annat än variabler som vi har tittat på tidigare i serien, och de kan hålla någon typ av värde, om det är en primitiv datatyp som en sträng, heltal, booleskt eller det kan referera till en mer komplex datatyp som sådan som en array eller ett annat objekt.
Poängen med attribut är att de existerar på klassnivå. Det betyder att variablerna kan användas i någon av de funktioner som definieras i klassen - de behöver inte överföras som funktionsargument, och de kan uppdateras för att återspegla objektets tillstånd när som helst under dess körning.
Nu, när det gäller på vilket sätt de är inställda, detta görs inom ramen för en speciell typ av funktion som kallas en konstruktör. Kort sagt är en konstruktör en funktion som är avsatt speciellt för att initiera en klass och i många fall används den för att initiera värden.
I PHP är en konstruktör en funktion som heter
__konstruera
vilket är ett reserverat ord på språket. Så givet attributen ovan och vår primer på funktioner, här är hur vi kan gå om att initialisera våra attribut:klass Blog_Post privat $ författare; privat $ publish_date; privat $ is_publicerad; offentlig funktion __construct () $ this-> author = "; $ this-> publish_date = null; $ this-> is_published = false; offentlig funktion publicera () // Publicera artikeln här public function delete () // Radera artikeln härEn av de viktigaste sakerna att ta bort från ovanstående kod är att attribut är referenser något annorlunda än normala variabler. Lägg märke till att de refereras till med hjälp av
$ detta
nyckelord. Detta skiljer attribut från normala variabler inom en klassdefinition.För det andra, notera att variablerna som ställs in till initialvärdena. Som det står just nu kommer varje blogginlägg som skapas inte ha en författare som specificeras, det kommer inte har ett publiceringsdatum, och det kommer det inte har tillstånd att publiceras.
När vi går vidare in i diskussionen om objektorienterad programmering, kommer vi att prata om hur variabler är inställda, hur de kan användas i hela klassen, hur de kan ställas in, hämtas och så vidare.
Offentlig, Privat och Vad?
För de snabba läsarna har du antagligen märkt att de sökord som används i hela koden, till exempel
offentlig
ochprivat
. Det finns också ett annat sökord som används inom objektorienterad programmering och det ärskyddad
.Vi pratar om var och en i detalj i nästa artikel.
Kommer härnäst
Som vi just nämnde finns det ett antal nyckelord som används för att hänvisa till attribut och funktioner som alla har att göra med det som är känt som omfattning. I nästa artikel ska vi börja utforska variabel och funktionsomfattning som är en kärnidé i objektorienterad programmering.
Så som vi har täckt alla grundelementen i programmeringen i PHP, är vi nu redo att flytta mer till objektorienterad programmering, varefter vi kommer att flytta in på att tillämpa koncept och tekniker i WordPress-utveckling.