Depistarea temelor și pluginurilor WordPress cu Eclipse și Xdebug

Debugarea PHP cu un editor de text și o combinație de ecou, ​​print_r și de ieșire este suficientă atunci când se ocupă cu codul simplu. Cu toate acestea, atunci când plugin-ul dvs. Killer WordPress crește la mai multe mii de linii care acoperă mai multe fișiere, această metodă va crește rapid obositoare și predispusă la erori. Când atingeți acel punct, va fi timpul să treceți la un program de depanare la distanță, astfel încât să puteți trece rapid și ușor prin fiecare linie de cod pentru a identifica problemele.


Un program de depanare la distanță este un program instalat pe partea de server care interceptează toate codurile PHP care rulează. Printre alte caracteristici, acesta are capacitatea de a opri rularea codului la jumătatea execuției și de a transmite informații unui client extern, cum ar fi un mediu integrat de dezvoltare (IDE). Acest tutorial se va referi la modul de utilizare a debuggerului de la distanță xdebug și a IDE-ului Eclipse open source împreună pentru a trece prin codul WordPress pentru a depana erorile.


Pasul 1: Creați-vă mediul de dezvoltare

Presupun că deja aveți Apache / PHP / MySQL și o instalare WordPress funcțională care rulează pe stația dvs. de lucru locală. Dacă nu, citiți tutorialul nostru despre cum să configurați un mediu de dezvoltare WordPress pentru Windows.

Instalați Xdebug

Cele mai recente instrucțiuni pot fi găsite pe site-ul xdebug.

Dacă sunteți pe Windows utilizând XAMPP pentru dezvoltare, binarul xdebug este deja inclus și puteți trece la configurarea PHP.

Dacă sunteți pe Mac OS X, aș recomanda compilarea de la sursă sau folosind PECL pentru a instala.

Dacă sunteți pe Linux, este posibil să puteți instala utilizând managerul de pachete al distribuției dvs. sau puteți compila din sursa / utilizarea PECL.

Configurați PHP pentru a încărca Xdebug

Va trebui să adăugați aceste două linii în fișierul dvs. php.ini (care poate trăi la /etc/php.ini sau c: \ xampp \ php \ php.ini sau în altă parte, în funcție de platforma dvs.):

 zend_extension = "/ absolut / cale / la / xdebug.so" xdebug.remote_enable = 1

După ce sa terminat, reporniți serverul Apache. Există multe alte opțiuni pe care le puteți configura mai târziu, care sunt explicate în documentația xdebug, dar aceasta ar trebui să fie suficientă pentru a începe.

Verificați Xdebug

Creați o pagină numită test.php în dosarul rădăcină web și adăugați un apel la funcția phpinfo ():

Căutați xdebug și ar trebui să găsiți o secțiune în partea de jos a paginii care arată astfel:

Instalați Eclipse și PDT

Descărcați Eclipse Classic din pagina de descărcare Eclipse, dezarhivați-o, copiați-o în directorul de aplicații, apoi lansați-o.

Faceți clic pe meniul Ajutor, apoi pe Instalare software. Sub opțiunea "Lucrați cu", selectați site-ul "Indigo". Bifați una din căsuțele de selectare "Instrumente de dezvoltare PHP (PDT) Feature", apoi faceți clic pe "Next".

Faceți clic pe pașii rămași ai asistentului pentru a termina instalarea, apoi reporniți Eclipse când vi se solicită.

Configurați Eclipse pentru a asculta pentru Xdebug

Activați perspectiva PHP făcând clic pe butonul Open Perspective din colțul din dreapta sus:

Apoi selectați opțiunea "Altele", selectați PHP, apoi faceți clic pe "OK":

Faceți clic pe butonul PHP pentru a merge la perspectiva PHP:

Apoi mergeți la "File -> New -> PHP Project". Acest lucru va aduce fereastra "New PHP Project". Puteți introduce "wordpress" sau orice doriți pentru numele proiectului. Ar trebui să selectați opțiunea "Creați proiectul la locația existentă (din sursa existentă)" din "Conținut" și să căutați în directorul rădăcină WordPress. Lăsați valorile prestabilite pentru celelalte secțiuni, apoi faceți clic pe butonul "Terminare".

Mergeți la "Window -> Preferences -> PHP -> Debug" și schimbați setarea "PHP Debugger" de la Zend la XDebug.

Apoi mergeți la "Window -> Preferences -> PHP -> Debug -> Debuggers Instalat" și faceți dublu clic pe XDebug. Schimbați opțiunea "Accept remote session (JIT)" de la "off" la "localhost" și faceți clic pe "OK".

Pasul 2 Debugați codul

Setați puncte de intersecție

Punctul de întrerupere este un marker care îi spune debuggerului să întrerupă execuția unui program la o anumită linie de cod pentru a putea inspecta ce se întâmplă.

Asta e ușor. Deschideți doar fișierul care conține codul pe care doriți să îl inspectați (cum ar fi fișierul index.php într-o temă pe care o dezvoltați). Apoi, în partea stângă a ferestrei fișierului, faceți dublu clic pe zona gri din stânga liniei. Un punct albastru ar trebui să apară pe rândul 20 din exemplul de mai jos (index.php din tema twentlyeleven).

Începeți o sesiune Xdebug

După setarea unui breakpoint, deschideți un browser și accesați site-ul dvs. WordPress local, adăugând șirul de interogare XDEBUG_SESSION_START = WordPress asa:

 http: // localhost / cale / catre / WordPress / XDEBUG_SESSION_START = WordPress

Acest lucru va spune xdebug pentru a seta un cookie pe care îl va căuta în încărcările ulterioare pagina. Dacă totul este configurat corect, ar trebui să vedeți o notificare că Eclipse a primit o sesiune de intrare. Faceți clic pe "OK" pentru a accepta și apoi vizualizarea Debug ar trebui să se deschidă pe prima linie a index.php.

Puteți examina variabilele care sunt în prezent în domeniul de aplicare utilizând fereastra de inspectori "Variabile" din partea dreaptă. În exemplul de mai sus, nu există variabile locale la care să se examineze, numai variabilele globale $ _COOKIE, $ _ENV, $ _FILES, $ _GET, $ _POST, $ _REQUEST, $ _SERVER și $ GLOBALS.

Pas prin cod

Pentru a vedea un exemplu de informații mai utile, va trebui să parcurgeți câteva linii de cod pentru a ajunge la The Loop. Eclipse "Debug" fereastra are mai multe controale pe care ar trebui să înțeleagă:

  1. Eliminați toate lansările terminate - Ștergeți sesiunile anterioare
  2. Relua - Reluă execuția codului. Dacă nu ați setat alte puncte de întrerupere, programul va termina încărcarea în mod normal.
  3. Suspenda - Nu se aplică depanării PHP.
  4. termina - Opriți executarea programului și depanarea.
  5. Deconecta - Opriți depanarea, dar continuați să executați programul.
  6. Pășește înăuntru - Urmăriți codul pe măsură ce execută linia de linie, inclusiv introducerea apelurilor funcționale. Acest lucru este util pentru depanarea unei anumite funcții.
  7. Pas peste - Săriți afișarea executării unui anumit apel de funcție. Execuția va fi reluată la următoarea linie.
  8. Întoarceți-vă - În interiorul unei funcții, aceasta va trece la locul unde se întoarce.
  9. Drop To Frame - Nu se aplică depanării PHP.
  10. Utilizați filtrele pasului - Nu este acceptată în Eclipse PDT

Faceți clic pe butonul "Reluați" o dată. Clientul de depanare Eclipse ar trebui să pauze în continuare la punctul de întrerupere pe care l-ați setat în fișierul index.php al temei.

Faceți clic pe butonul "Pas Into". Acest lucru vă va duce în funcția WordPress "have_posts". Faceți clic din nou pe "Pas Into" și veți vedea variabila globală $ wp_query afișată în fereastra "Variabile".

Faceți clic pe "Step Return" pentru a ieși din funcția "have_posts" și veți reveni în fișierul index.php. În exemplu, acest lucru vă va lăsa apoi la un apel la funcția "twentyeleven_content_nav". Puteți fie să intrați în ea pentru a vedea ce se întâmplă dacă sunteți interesat sau pentru a trece peste el dacă nu sunteți.

Dacă faceți clic pe "Pasul peste" vă va duce la apelul la The Loop. Pătrunderea în "the_post" vă va învăța multe despre modul în care WordPress aduce datele și le scrie pe pagina în timpul Buclă. Urmăriți fereastra "Variabile" pentru a monitoriza schimbarea variabilelor locale și globale pe măsură ce se execută funcția.

De asemenea, puteți trece prin propriul cod în același mod pentru a vedea cum se manipulează variabilele pe măsură ce rulează codul.

După ce ați văzut tot ce doriți să vedeți, dați clic pe butonul "Reluați" și blogul dvs. va termina încărcarea ca de obicei.

Dacă faceți clic pe un link către o altă pagină de browser, rețineți că programul de depanare se va încărca din nou, chiar dacă șirul de interogare XDEBUG_SESSION_START nu este atașat la sfârșitul adresei URL.

Închiderea sesiunii de depanare

Când nu mai doriți ca Eclipse să intre în modul de depanare când o pagină se încarcă pe blogul dvs. local, trebuie doar să introduceți în browser un apel URL care arată astfel:

 http: // localhost / cale / catre / wordpress / XDEBUG_SESSION_STOP

Aceasta va șterge cookie-ul xdebug, iar paginile dvs. se vor încărca în mod normal până când deschideți o altă sesiune xdebug.

Folosești Eclipse și Xdebug pentru dezvoltarea hardcore a WordPress? Dacă da, aveți alte sfaturi suplimentare? Dacă nu, ce te oprește de la scufundări?

Cod