Object-Oriented Programming în WordPress Funcții și atribute

Pe măsură ce continuăm discuția despre programarea orientată pe obiecte în contextul WordPress, este timpul să începem să vorbim despre trăsăturile reale ale programării orientate pe obiecte.

Deși am acoperit deja clase, am trebuit să explorăm câteva construcții fundamentale de programare înainte de a ne întoarce în jurul unor concepte core-orientate pe obiecte. 

În acest articol, vom începe să vorbim despre funcții și atribute: două aspecte fundamentale ale programării orientate pe obiecte. Dar, mai întâi, asigurați-vă că sunteți toți prinși cu articolele anterioare:

  1. O introducere
  2. Clase
  3. Tipuri
  4. Structuri de control: declarații condiționate
  5. Structuri de control: buclă

Unul dintre punctele pe care aș dori să le reiterez în legătură cu această serie este că lucrăm la examinarea programării orientate pe obiecte în contextul WordPress pornind de la aspectele fundamentale absolute ale programării.

Facem acest lucru pentru a ne asigura că cei care sunt începători la programare au tot ce au nevoie nu numai pentru a începe să programeze, dar și pentru a învăța paradigma și pentru a lucra în cele din urmă pentru a construi un plugin WordPress.

Cu aceasta a spus, să reluăm discuția noastră vorbind despre funcții și atribute.

funcţii

Pentru cei care sunt familiarizați cu programarea procedurală, atunci sunteți, fără îndoială, familiarizați cu funcțiile - la urma urmei, ele sunt modul în care faceți munca, corect?

Dar pentru cei care doar sar în programare, există două lucruri de înțeles despre funcții:

  1. Acestea există atât în ​​programarea procedurală, în programarea funcțională, cât și în programarea orientată pe obiecte.
  2. Acestea pot fi văzute ca o modalitate de a lega împreună toate construcțiile anterioare pentru a finaliza o unitate de lucru mai complexă.

La al doilea punct, este adevărat că o mare parte din ceea ce am discutat anterior - adică variabilele, condiționările, buclele și așa mai departe - sunt responsabile de completarea unei singure lucrări unice; totuși, fiecare dintre aceștia lucrează împreună cu ceilalți pentru a obține ceva puțin mai mare decât ei înșiși.

În funcție de limbă, probabil că veți auzi aceste metode sau rutine. Indiferent de terminologia utilizată, punctul este că funcțiile utilizează construcții fundamentale pentru a finaliza o acțiune.

Funcțiile pot funcționa și în trei moduri:

  1. Funcțiile pot funcționa prin preluarea informațiilor și prin operarea acestora.
  2. Funcțiile pot funcționa prin returnarea informațiilor înapoi la codul care le-a invocat.
  3. Funcțiile pot efectua o unitate de lucru fără a lua nicio informație sau pentru a returna orice informație în codul care a invocat-o. Pur și simplu, poate efectua în tăcere o acțiune.

Vom examina mai detaliat fiecare dintre aceste scenarii într-un moment, iar într-un articol viitor vom vedea cum funcționează în cadrul clasei. Pentru moment, să aruncăm o privire la modul în care funcțiile funcționează în cadrul PHP și mai multe nuanțe despre fiecare dintre ele.

Funcții simple

Rețineți din secțiunea anterioară că există momente în care putem defini funcții care nu acceptă nicio intrare și nici nu returnează nicio informație. 

În acest caz, aceste tipuri de funcții vor efectua de obicei un anumit tip de operațiune (cum ar fi actualizarea unei opțiuni în baza de date) și vor fi invocate de o altă funcție după ce o anumită operație a fost finalizată.

De exemplu, să spunem că avem o funcție pe care dorim să o utilizăm pentru a actualiza baza de date WordPress care stau la baza acesteia. Acest lucru necesită cunoașterea mai multor lucruri:

  • update_option
  • O cheie pe care o vom folosi pentru a stoca informațiile
  • Valoarea de stocat și care va fi recuperată împreună cu cheia

În cazul nostru, să presupunem că vrem să actualizăm o valoare în baza de date identificată de către blog_last_updated cheie. Apoi, vom folosi funcția PHP timp() pentru a stoca timpul când este apelată funcția.

Cu aceasta a spus, să definim funcția noastră:

Pe baza descrierii pe care am furnizat-o mai sus, puteți vedea că corpul funcției utilizează funcția update_option Funcția API WordPress cu tasta și valoarea specificată pe care le-am descris.

Acest lucru poate fi apoi invocat de o altă piesă de cod prin simpla chemare set_blog_updated ();.

Argumente

Funcțiile care nu acceptă argumente pot fi utile doar până la un anumit nivel. La un moment dat, trebuie să aveți posibilitatea să transmiteți informații într-o funcție astfel încât să poată efectua un anumit tip de calcul, funcționare sau evaluare a informațiilor.

În conformitate cu exemplul de mai sus, să presupunem că dorim să actualizăm baza de date cu o marcă de timp, dar numai dacă o anumită cheie este trecută în funcție; altfel, nu vom face nimic.

Observați că semnătura funcției - adică numele funcției și datele din paranteze - a fost actualizată pentru a accepta o variabilă la care se face referire cheie $.

Apoi, funcția folosește o condiție pentru a verifica valoarea valorii variabilei este egală cu cea a cheii pe care am privit-o în prima versiune a funcției. Pentru a face o comparație ușoară, se coboară valoarea de cheie $ prin utilizarea PHP strtolower funcţie.

Aceasta înseamnă că putem invoca funcția în felul următor și încă actualizați-l:

  • set_blog_updated ('BLOG_LAST_UPDATED');
  • set_blog_updated ('Blog_Last_Updated');
  • set_blog_updated ('blog_last_updated');

Toate apelurile de funcții de mai sus vor efectua următoarea operație; totuși, dacă trecem altceva în funcție, condiționatul va evalua la fals și ar fi nu declanșa funcția de actualizare.

De exemplu, apelarea set_blog_updated ('not_now'); ar nu muncă.

Se intoarce

Acum, să spunem că dorim ca funcția cu care lucrăm să revenim la o valoare. Mai precis, să presupunem că am vrut să întoarcem o valoare dacă funcția de actualizare a fost lansată cu succes. 

Pentru a face acest lucru, putem profita de funcțiile unei funcții întoarcere precum și valoarea pe care o returnează funcția update_option. Potrivit Codului WordPress, update_option va returna urmatoarele:

Adevărat dacă valoarea opțiunii sa schimbat, dacă nu este falsă sau dacă actualizarea a eșuat.

În acest scop, putem regla funcția noastră de a funcționa astfel:

Acum avem o funcție care acceptă un argument, returnează o valoare și, de asemenea, folosește o condiție nu numai pentru a actualiza valoarea, ci și pentru a se asigura că valoarea a fost actualizată cu succes.

Având în vedere funcția de mai sus, putem să o invocăm ca în exemplele anterioare, însă acum putem stoca rezultatul acesteia într-o variabilă care ne va permite să îmbunătățim în continuare codul din programul nostru.

De exemplu, putem continua să apelăm funcția spunând set_blog_last_updated ('blog_last_updated'); dar acum putem de asemenea să stocăm rezultatul funcției într-o variabilă.

Pentru a face acest lucru, tot ce trebuie să faceți este să scrieți o linie de cod care să efectueze următoarele: $ blog_was_updated = set_blog_last_updated ('blog_last_updated'); În acest caz, variabila $ blog_was_updated va fi setat la Adevărat dacă starea a fugit și apelul de actualizare a avut succes, dar va fi fals dacă condiția nu a funcționat sau dacă a funcționat, dar nu update_function a eșuat.

Argumente cu durată variabilă

Există un alt aspect al funcțiilor care sunt dincolo de sfera de aplicare a acestui articol special și care sunt argumentele cu lungime variabilă. Pe scurt, există o modalitate prin care o funcție poate accepta o serie de argumente pe care nu le putem anticipa în timp ce scriem coduri.

 Dacă sunteți interesat să citiți înainte, puteți verifica articolul din manualul PHP; cu toate acestea, vom căuta să acopere acest lucru mai târziu în serie.

atribute

În acest moment, vom schimba vitezele și vom vorbi despre ceva care este pur și simplu legat de programarea orientată pe obiecte și care este atributele clasei.

Rețineți din discuția noastră despre clase că am analizat o probă pentru o clasă Postare pe blog. Pentru referință, codul a arătat astfel:

clasa Blog_Post autor privat $; privat $ publish_date; private $ is_published; funcția publică publica () // Publicarea articolului aici funcția publică șterge () // Șterge articolul aici

În acest moment din serie, ar trebui să puteți identifica cu ușurință definiția clasei, definiția funcției și atributele.

În mod specific, atributele sunt cele trei variabile care există în partea de sus a fișierului deasupra funcțiilor. După cum se menționează în articolul despre clase, atributele pot fi considerate ca adjective care descriu clasa.

În exemplul de mai sus, avem o clasă care reprezintă o postare pe blog, iar o postare pe blog poate fi descrisă de autor, data de publicare și dacă a fost publicată sau nu.

Aceste valori particulare nu sunt altceva decât variabile așa cum am analizat mai devreme în serie și pot deține orice tip de valoare, fie că este vorba de un tip de date primitiv, cum ar fi un șir, întreg, boolean sau poate face referire la un tip de date mai complex ca o matrice sau alt obiect.

Punctul de atribute este că acestea există la clasă. Aceasta înseamnă că variabilele pot fi folosite în oricare dintre funcțiile definite în clasă - ele nu trebuie să fie transmise ca argumente funcționale și pot fi actualizate pentru a reflecta starea obiectului în orice moment în timpul acestuia rulare. 

Acum, în ceea ce privește Cum acestea sunt stabilite, acest lucru se face în contextul unui tip special de funcție numit constructor. Pe scurt, un constructor este o funcție care este pusă deoparte pentru inițierea unei clase și, în multe cazuri, este folosită pentru a iniția valori.

În PHP, un constructor este o funcție numită __construi care este un cuvânt rezervat în limba. Deci, având în vedere atributele de mai sus și elementul nostru de bază al funcțiilor, iată cum putem iniția atributele noastre:

clasa Blog_Post autor privat $; privat $ publish_date; private $ is_published; funcția publică __construct () $ this-> author = "; $ this-> publish_date = null; $ this-> is_published = false; public function publish () // Publish the article here // Șterge articolul aici

Unul dintre cele mai importante lucruri pe care trebuie să le îndepărtăm de la codul de mai sus este că atributele sunt referințe puțin diferite decât variabilele normale. În mod specific, observați că acestea sunt menționate folosind $ this cuvinte cheie. Aceasta este ceea ce diferențiază atributele de variabilele normale într-o definiție a clasei.

În al doilea rând, rețineți că variabilele care sunt setate la valorile inițiale. După cum se află acum, fiecare post de blog creat va fi nu au un autor care este specificat, va nu au o dată de publicare, și o va face nu au o stare de publicare.

Pe măsură ce vom continua să discutăm programarea orientată pe obiecte, vom vorbi despre cum sunt stabilite variabilele, cum pot fi utilizate în întreaga clasă, modul în care pot fi setate, preluate și așa mai departe.

Public, privat și ce?

Pentru acei cititori buni, probabil ați observat că cuvintele cheie sunt utilizate în întregul cod, cum ar fi public și privat. Există și un alt cuvânt cheie care este folosit în programarea orientată pe obiecte și asta e protejat.

Vom vorbi despre fiecare dintre acestea în detaliu în următorul articol.

Urmeaza

Așa cum am menționat deja, există un număr de cuvinte cheie care sunt folosite pentru a se referi la atribute și funcții care au de-a face cu ceea ce este cunoscut domeniu. În următorul articol, vom începe să explorăm domeniul variabil și al funcției, care este o idee de bază în programarea orientată pe obiecte.

Deoarece am acoperit toate elementele fundamentale ale programării în PHP, acum ne pregătim să ne mișcăm mai mult în programarea orientată pe obiecte, după care vom trece la aplicarea conceptelor și tehnicilor în dezvoltarea WordPress.

Cod