Terwijl we onze discussie over objectgeoriënteerd programmeren voortzetten in de context van WordPress, is het tijd voor ons om te beginnen praten over de eigenlijke kenmerken van objectgeoriënteerd programmeren.
Hoewel we al klassen hebben behandeld, moesten we enkele fundamentele programmeerconstructies verkennen voordat we teruggingen naar enkele van de belangrijkste objectgerichte concepten.
In dit artikel gaan we het hebben over functies en attributen: twee fundamentele aspecten van objectgeoriënteerd programmeren. Maar eerst zorg je ervoor dat je allemaal bij de vorige artikelen bent:
Een van de punten die ik graag over deze serie wil herhalen, is dat we bezig zijn met het onderzoeken van objectgeoriënteerde programmering in de context van WordPress door te vertrekken van de absolute basisaspecten van programmeren.
We doen dit om ervoor te zorgen dat degenen die beginners zijn om te programmeren alles hebben wat ze nodig hebben, niet alleen om te beginnen met programmeren, maar ook om het paradigma te leren en om uiteindelijk te werken aan het bouwen van een WordPress plug-in.
Met dat gezegd, laten we onze discussie hervatten door te praten over functies en attributen.
Voor degenen die vertrouwd zijn met procedureel programmeren, dan bent u ongetwijfeld bekend met functies - ze zijn tenslotte hoe u uw werk gedaan krijgt, goed?
Maar voor degenen die gewoon in het programmeren springen, zijn er twee dingen om te begrijpen over functies:
Op het tweede punt is het waar dat veel van wat we eerder bespraken - dat wil zeggen, variabelen, conditionals, loops, enzovoort - ook verantwoordelijk is voor het voltooien van één enkel werk; echter, elk van deze werkt in combinatie met elkaar om iets te bereiken dat iets groter is dan zijzelf.
Afhankelijk van de taal, zult u deze waarschijnlijk ook horen als methoden of routines. Ongeacht de gebruikte terminologie, het punt is dat functies basisconstructies gebruiken om een actie te voltooien.
Functies kunnen ook op drie manieren werken:
We zullen elk van deze scenario's in een oogwenk meer in detail bekijken, en in een toekomstig artikel zullen we zien hoe ze binnen de klas werken. Laten we voorlopig eens kijken hoe functies werken binnen PHP en verschillende nuances over elk van hen.
Bedenk uit de vorige sectie dat er tijden zijn dat we functies kunnen definiëren die geen invoer accepteren en ook geen informatie terugsturen.
In dit geval zullen dit soort functies meestal een bepaald type bewerking uitvoeren (zoals het bijwerken van een optie in de database) en ze zullen worden aangeroepen door een andere functie nadat een bepaalde bewerking is voltooid.
Laten we dus zeggen dat we een functie hebben die we willen gebruiken om de onderliggende WordPress-database bij te werken. Dit vereist dat we verschillende dingen weten:
update_option
Laten we in ons geval zeggen dat we een waarde in de door de database geïdentificeerde database willen bijwerken blog_last_updated
sleutel. Vervolgens gebruiken we de PHP-functie tijd()
om de tijd op te slaan waarop de functie wordt aangeroepen.
Met dat gezegd, laten we onze functie definiëren:
Op basis van de beschrijving die we hierboven hebben verstrekt, kunt u zien dat de hoofdtekst van de functie de
update_option
WordPress API-functie met de opgegeven sleutel en waarde die we hebben beschreven.Dit kan dan worden opgeroepen door een ander stuk code door gewoon te callen
set_blog_updated ();
.argumenten
Functies die geen argumenten accepteren, kunnen alleen tot een bepaald niveau nuttig zijn. Op een gegeven moment moet u informatie kunnen doorgeven aan een functie zodat deze een bepaald type berekening, bewerking of evaluatie van de informatie kan uitvoeren..
In overeenstemming met ons voorbeeld hierboven, laten we zeggen dat we de database nog steeds willen bijwerken met een tijdstempel, maar alleen als een bepaalde sleutel in de functie wordt ingevoerd; anders doen we niets.
Merk op dat de handtekening van de functie - dat wil zeggen de naam van de functie en de gegevens tussen haakjes - is bijgewerkt om een variabele te accepteren waarnaar wordt verwezen door
$ key
.Vervolgens gebruikt de functie een voorwaardelijke om te controleren of de waarde van de variabele gelijk is aan die van de sleutel waarnaar we keken in de eerste versie van de functie. Om een eenvoudige vergelijking te maken, verlaagt het de waarde van
$ key
door PHP's te gebruikenstrtolower
functie.Dit betekent dat we de functie op de volgende manier kunnen aanroepen en nog steeds laat het updaten:
set_blog_updated ('BLOG_LAST_UPDATED');
set_blog_updated ('Blog_Last_Updated');
set_blog_updated ('blog_last_updated');
Alle bovenstaande functie-aanroepen voeren de volgende bewerking uit; als we echter iets anders in de functie zouden doorgeven, zou de voorwaardelijke evaluatie evalueren vals
en zou niet start de updatefunctie.
Bijvoorbeeld bellen set_blog_updated ('not_now');
zou niet werk.
Laten we nu zeggen dat we willen dat de functie waarmee we werken een waarde retourneert. Laten we stellen dat we een waarde wilden teruggeven aan de vraag of de updatefunctie wel of niet is geactiveerd.
Om dit te doen, kunnen we gebruik maken van de functies van een functie terugkeer
verklaring en de waarde die de functie update_option retourneert. Volgens de WordPress Codex, update_option
zal het volgende retourneren:
Waar als de optiewaarde is gewijzigd, onwaar als dit niet het geval is of als de update is mislukt.
Daartoe kunnen we onze functie aanpassen om zo te werken:
Nu hebben we een functie die een argument accepteert, een waarde retourneert en ook een voorwaarde gebruikt, niet alleen om de waarde bij te werken, maar ook om ervoor te zorgen dat de waarde met succes is bijgewerkt.
Gezien de bovenstaande functie kunnen we het gebruiken zoals we in vorige voorbeelden hebben gedaan, maar nu kunnen we het resultaat opslaan in een variabele die ons in staat stelt om de code in ons programma verder te verbeteren..
We kunnen bijvoorbeeld de functie blijven aanroepen door te zeggen
set_blog_last_updated ('blog_last_updated');
maar nu kunnen we het resultaat van de functie ook in een variabele opslaan.Om dit te doen, hoeven we alleen maar een regel code te schrijven die het volgende doet:
$ blog_was_updated = set_blog_last_updated ('blog_last_updated');
In dit geval de variabele$ blog_was_updated
zal worden ingesteld opwaar
als de voorwaarde liep en de update oproep succesvol was, maar zal zijnvals
als de voorwaarde niet is uitgevoerd of als deze wel is uitgevoerd, maar deupdate_function
mislukt.Argumenten met variabele lengte
Er is nog een ander aspect van functies dat buiten het bestek van dit specifieke artikel valt en dat van variabele lengte is. Kort gezegd, er is een manier waarop een functie een aantal argumenten kan accepteren waarvan we niet kunnen anticiperen tijdens het schrijven van code.
Als u geïnteresseerd bent om vooruit te lezen, dan kunt u het artikel in de PHP-handleiding bekijken; we zullen dit echter later in de serie bekijken.
attributen
Op dit punt gaan we schakelen en praten over iets dat puur gerelateerd is aan objectgeoriënteerd programmeren en dat zijn klassekenmerken.
Bedenk uit onze discussie over klassen dat we naar een voorbeeldklasse hebben gekeken voor een
Blogpost
. Ter referentie, de code zag er zo uit:class Blog_Post private $ author; privé $ publicatiedatum; privé $ is_published; public function publish () // Publiceer het artikel hier public function delete () // Verwijder hier het artikelOp dit punt in de reeks moet u gemakkelijk de klassedefinitie, de functiedefinitie en de kenmerken kunnen identificeren.
In het bijzonder zijn de kenmerken de drie variabelen die boven in het bestand boven de functies staan. Zoals vermeld in het artikel over klassen, kunnen attributen worden beschouwd als de bijvoeglijke naamwoorden die de klasse beschrijven.
In het bovenstaande voorbeeld hebben we een klasse die een blogpost vertegenwoordigt en een blogpost kan worden beschreven door de auteur, de publicatiedatum en of deze al dan niet is gepubliceerd.
Deze specifieke waarden zijn niets anders dan variabelen zoals we eerder in de serie hebben bekeken, en ze kunnen elk type waarde bevatten, of het nu een primitief gegevenstype is, zoals een string, integer, boolean of het kan verwijzen naar een complexer gegevenstype zoals als een array of een ander object.
Het punt van attributen is dat ze bestaan in het niveau van de klas. Dit betekent dat de variabelen kunnen worden gebruikt in een van de functies die zijn gedefinieerd in de klasse - ze hoeven niet te worden doorgegeven als functieargumenten en ze kunnen worden bijgewerkt zodat ze de staat van het object op elk gewenst moment tijdens de uitvoering weerspiegelen runtime.
Nu, in termen van hoe ze zijn ingesteld, dit gebeurt in de context van een speciaal type functie genaamd een constructor. Kort gezegd, een constructor is een functie die speciaal is gereserveerd voor het initialiseren van een klasse, en in veel gevallen wordt het gebruikt om waarden te initiëren.
In PHP is een constructor een functie met de naam
__construct
wat een gereserveerd woord is in de taal. Dus gezien de bovenstaande kenmerken en onze inleiding over functies, hier is hoe we onze attributen kunnen initialiseren:class Blog_Post private $ author; privé $ publicatiedatum; privé $ is_published; public function __construct () $ this-> author = "; $ this-> publish_date = null; $ this-> is_published = false; public function publish () // Publiceer het artikel hier public function delete () // Verwijder hier het artikelEen van de belangrijkste dingen om te verwijderen van de bovenstaande code is dat attributen referenties zijn die iets anders zijn dan normale variabelen. Let vooral op dat er naar wordt verwezen met behulp van de
$ this
trefwoord. Dit onderscheidt attributen van normale variabelen binnen een klassendefinitie.Ten tweede, merk op dat de variabelen die worden ingesteld op de beginwaarden. Zoals het er nu uitziet, zal elk blogbericht dat wordt gemaakt dat wel doen niet hebben een auteur die is opgegeven, het zal niet hebben een publicatiedatum en dat zal ook gebeuren niet hebben een staat van zijn gepubliceerd.
Naarmate we verder gaan in het bespreken van objectgeoriënteerd programmeren, gaan we praten over hoe variabelen zijn ingesteld, hoe ze in de klas kunnen worden gebruikt, hoe ze kunnen worden ingesteld, opgehaald enzovoort.
Openbaar, privé en wat?
Voor die slimme lezers heb je waarschijnlijk de trefwoorden opgemerkt die in de hele code worden gebruikt, zoals
openbaar
enprivaat
. Er is ook nog een ander zoekwoord dat wordt gebruikt binnen objectgeoriënteerd programmeren en dat isbeschermde
.We zullen dit in het volgende artikel in detail bespreken.
Komende Volgende
Zoals we zojuist vermeldden, zijn er een aantal sleutelwoorden die worden gebruikt om te verwijzen naar attributen en functies die allemaal te maken hebben met wat bekend staat als strekking. In het volgende artikel zullen we beginnen met het verkennen van variabelen en functiescores, wat een kernidee is bij objectgeoriënteerd programmeren.
Omdat we alle basiselementen van programmeren in PHP hebben behandeld, bereiden we ons nu voor op een meer georiënteerde object-georiënteerde programmering, waarna we ons gaan bezighouden met het toepassen van de concepten en technieken in WordPress-ontwikkeling..