Eu folosesc această metodă pentru a depana programele PHP deja ani, probabil, 10. Și el nu a mai lasa-ma jos. De ce am decis să împărtășesc această metodă cu tine? Probabil pentru că doare să se uite la nou-veniții, care iau de la un cod, sau scrie moletieră decente ei înșiși, el (natural) nu funcționează, și ei încep să se schimbe haotic totul, încercând într-un fel de a „găsi“ locul în care se află eroarea . Dar este de fapt un mod complex, care nu conduce întotdeauna la rezultatul. Deci, aici e ceea ce am sugera.
Principalul lucru pentru depanarea programelor și de căutare pentru „bug-uri“ - este răbdare și consecvență în acțiunile. Dacă nu urmezi pas cu pas algoritm, nu funcționează, va ajunge confuz și ceea ce vine.
Algoritmul incrementală în sine este redus la marcajele de aliniere coerente în program, actualizarea paginilor și monitorizarea informațiilor afișate în browser. Cel mai bine este să începeți cu o singură etichetă.
Fiecare etichetă arată ceva de genul
Interpret de cod PHP, atunci când vin la astfel de etichete se va face următoarele: print „1“ în browser-ul, se va opri imediat executarea codului de program. Astfel, veți ști că codul de program a atins acest punct, ca și pe ecran va fi afișat edinichka iar acest lucru va fi ultimul care va fi afișat în browser. Nu este nimic mai ușor de învățat - vine la acest punct interpretul.
Nu puteți plasa de ieșire (), dacă sunteți absolut sigur că acest cod nu actualizează pagina de după retragerea (nu de reîmprospătare).
Alte acțiuni pot fi după cum urmează:
- Puteți muta eticheta depana codul de mai jos pentru a afla - dacă interpretul vine la acest cod punct. Foarte util dacă aveți nevoie pentru a afla pe trăgaci de fapt, în cazul în care () sau faptul că intrarea a metodei / funcției.
- Nu puteți afișa „1“ și ceva de genul „# 1 #“ și apoi căutați-l în browser-ul codul sursă HTML, nu trebuie confundat cu obișnuitul terminalul de ieșire de depanare (de exemplu, dacă o pagină are o grămadă de alte celor).
- Puteți pune mai multe tag-uri în diferite părți ale codului imediat, dar eticheta trebuie să fie în mod necesar diferită și consistența dorită. De exemplu, "# 1 #", "# 2 #", "# 3 #," și așa mai departe. Deci, veți vedea în browser-ul dvs., toate etichetele, care a ajuns până la interpretul și va fi capabil să înțeleagă logica pe care a lucrat în program.
Regula generală: Mutați codul de foarte încet, încercând să nu pierdeți momentul în care se afla bug. Încercați să utilizeze mai mare a metodei de împărțire în două.
variabile de ieșire
Dar ce bine este faptul că interpretul a ajuns sau nu au ajuns la un anumit loc? Uninformative. Să adăugăm mai multă viață!
Este adesea necesar pentru a aduce valoarea variabilelor specifice într-un anumit punct din cod. Și apoi va veni la îndemână două funcții puternice - print_r () și var_dump (). Iată cum le puteți utiliza.
Pentru a vedea conținutul unei variabile, vom folosi print_r ($ var); sau print_r ($ obj-> var), dacă doriți să vedeți conținutul proprietăților unui anumit obiect. Pentru a vedea valoarea true sau false, folosiți var_dump (). Aici este necesar să se clarifice ceva. Funcția print_r () a fost special conceput pentru a afișa frumos valorile diferite tipuri. Și se imprimă și întregi și șiruri, și tablouri și chiar obiecte. Dar adevărat și fals, ea nu transmite la ieșire, care este, de ieșire va fi întotdeauna egal cu șirul gol. Aici vine la var_dump de ajutor (), care afișează valoarea exactă și tipul de valoare.
Utilizați var_dump () peste tot eu nu recomand. Concluzie, le-au generat, are un aspect mult mai complicat decât producția print_r ().
Total, care este modul în care va arăta eticheta nostru informativ:
Duplica de obicei tag-ul în cadrul celorlalte personaje, pentru a vedea în cazul în care se încheie încheierea variabilelor de test. Este adesea util.
Puteți totuși înainte de fiecare print_r () de ieșire echo «var =»; pentru a înțelege în cazul în care și a căror valoare este afișată.
Măsurarea unei porțiuni a codului de timp
Foarte des, atunci când profilarea (și mai des atunci când se caută „frână“ în cod), este necesar să se măsoare performanța în timp real a unui anumit fragment de cod.
PHP are o caracteristică de mare microtime (), care returnează ora curentă în microsecunde. În cazul în care specificați parametrul true, atunci ar reveni ca un număr în virgulă mobilă care avem nevoie.
Ideea de a măsura o bucată de timp de execuție de cod metoda este redusă la ora actuală să-și amintească înainte de această piesă și se compară cu ora actuală, la sfârșitul piesei. Asta este, astfel:
În acest caz, după ce eticheta vom vedea timpul petrecut pe executarea de cod în câteva secunde. De multe ori, veți vedea ceva de genul: 1.233433E-05, este o notație de inginerie este un număr foarte mic și foarte mari. Puteți să-l aducă la vizualizarea normală, adăugând funcția sprintf ():
Un cod mai mic, dar veți vedea mai mult un fel de normală 0.000012, și anume 12 microsecunde.
Asta e tot pentru azi, mâine voi scrie un articol special care vă va spune despre încă o altă metodă de depanare folosind descărcarea fișierului jurnal (poate fi util dacă nu doriți să interfereze cu funcționarea normală a site-ului, care este concluzia diferitelor etichete de pe pagina nu este validă).