, xdebug - professionelle php debugging -,,,,, 6,,,,,,,,, 49,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, vores dagsorden, introduktion til emnet., downloade og installere xdebug på dit lokale maskine (mac os x 10.6.6 +, mamp 2.1.1). ved at integrere med phpstorm. praksis debugging -.,,,,,, hvad du vil have, at mac, mac os x 10.6.6 +.hvis du er på 10,8. x, du kan, er nødvendigt at installere xquartz som æble fjernet x11. hvis du er på vinduerne, og hele processen er noget lettere, slog bare google for flere detaljer.,, æble xcode 4.6 (frit om mac - app butikken)., kommando linjen værktøj.,, homebrew. en terminal app af dit valg. phpstorm 5 + (mange andre ide 's arbejde såvel).,, hvad er xdebug?jo, xdebug er en udvidelse til php at gøre deres liv lettere, mens debugging - din kode.lige nu, du kan anvendes til fejlfinding i din kode med forskellige andre enkle løsninger.disse omfatter brug af echo erklæringer i forskellige stater i deres program, for at finde ud af, om din ansøgning vedtager en betingelse eller at få værdien af en bestemt variabel.desuden kan du bruger ofte fungerer som var_dump,, print_r, eller andre til at inspicere genstande og arrays. hvad jeg tit er lille hjælper, funktioner, som denne f.eks.:, funktion hul ($) værdi (echo '< før > «. var_dump ($) værdi. echo' s < /pre - > «), og sandheden er, at jeg plejede at gøre det, i meget lang tid, faktisk.,, sandheden er, at jeg plejede at gøre det, i meget lang tid, faktisk.så, hvad er der galt med det?teknisk set, så er der intet galt med det.det fungerer, og den gør, hvad den skal gøre. men forestil dem et øjeblik, som deres ansøgninger udvikler sig, kan du få for vane at drysse dine kode forfra med en lille echos, var_dumps og skik debuggers.der ydes nu, det er ikke obstruktiv under deres test arbejdsgang, men hvad hvis du glemmer at rydde lidt op i det ser kode, før det går til produktionen?dette kan medføre nogle skræmmende problemer, som de små debuggers kan selv finde vej til version kontrol og blive der i lang tid. den næste spørgsmål er: hvordan ser i produktion?igen, forestil dig, at du er surfing en favorit webtjenester og pludselig får du en stor vifte smide fejlcheck oplysninger til dig på skærmen.nu kan forsvinde efter næste browser her, men det er ikke en god oplevelse for brugeren af webstedet. nu endelig, har du nogensinde ville være i stand til at gå gennem din kode, linje for linje, vagt udtryk, og gå ind i en funktion til at se, hvorfor det er at producere den forkerte tilbage værdi?du skal helt sikkert grave i verden af professionelle debugging - med, xdebug, som det kan løse alle de problemer, mamp konfigureringen ovenfor.,,, jeg ønsker ikke at gå for dybt ind i downloading og installation af mamp proces på en mac.i stedet vil jeg bare fortælle dig, at jeg bruger php 5.4.4 og standard apache havn (80) i hele det læst.,, din første beslutning, en kort besked, før vi begynder med at opbygge vores eget xdebug via homebrew: hvis du vil have den nemmeste vej, mamp allerede kommer med xdebug 2.2.0.for at gøre det muligt for det åbne:,, /ansøgninger /mamp /bin /php /php5.4.4 /conf /folkesundhedsprogrammet. ini, med en tekst, redaktør af dit valg, til at gå helt i bund og uncomment sidste linje ved at fjerne den,,,., de sidste to linjer i sagen, bør læse sådan her: [xdebug] zend_extension = "/ansøgninger /mamp /bin /php /php5.4.4/lib/php/extensions/no-debug-non-zts-20100525 /xdebug.", hvis du spørger dig selv: "hvorfor skulle jeg vælge en hårdere end det her?", og mit svar er, at det aldrig er en fejl at se ud over dit rim og lære noget nyt.især som fremkalder i disse dage, holde øje med server - relaterede ting altid vil komme i handy på et tidspunkt.lovede.,, installere xcode og kommando linjen værktøj, du kan få æble xcode gratis af mac - app butikken.når du har downloadet det bedes gå til anvendelse præferencer, tryk på "download", tab og montere "kommando linjen redskaber", fra listen.,, installere homebrew, homebrew er en pæn lille pakke manager for mac os x, der får du alle de her æble tilbage.at installere homebrew, pasta følgende kommando ind i terminalen, ruby - e "$(krøller - fsskl rå. github. kom /mxcl /homebrew /), et mac, homebrew vil være den mest hensigtsmæssige måde at installere xdebug.men om linux, udarbejdelse af det selv er den bedste måde at gå. det er ikke let for en mac.,, tip: vinduer brugere har bare brug for at downloade, *. dll, fil fra xdebug.org, sætte det ind i den xampp mappe og tilføje den vej til dem, php.ini, fil., som php entreprenør, du skulle nu være klar over josé gonzález "homebrew folkesundhedsprogrammet" github repo, som indeholder mange nyttige "øl".hvis du nogensinde har spurgt dig selv, hvor at installere php 5.4 manuelt, du er lige her. nu, hvis du kommer i problemer, samtidig med at installere homebrew, tjek er josé gør. at fuldføre vores homebrew udflugt, vi ønsker at "bank" til josé brygning formler ved udførelse af følgende kommandoer i terminalen anvendelse: bare bank, homebrew /kopier, vil det få os nogle områder, vi har brug for er josé formler, bryg tap josegonzalez /homebrew folkesundhedsprogrammet, er gjort.nu skal vi være klar til at installere xdebug comfy, fra mac.,, installere xdebug, tilbage i dit endelige anvendelse, vær venlig at henrette:, bryg installere php54 xdebug, hvis du er på folkesundhedsprogrammet 5.3, bare erstatte "4" med "3"), installation vil tage nogen tid.når det er gjort, vil du se en lille øl - og nogle yderligere instrukser, som du kan se bort fra, hvad der lige skete?homebrew downloadet filerne, herunder deres besiddelser og byggede dem for dig.som jeg allerede har sagt, at selv om det kan være besværligt.til sidst, vi har en nyligt udarbejdet, xdebug.so, befinder sig i, /bar /lokale /kælder /php54 xdebug /2.2.1 /,.,, opmærksomhed: bemærk, at homebrew vil installere php 5.4 til dit system under processen.dette bør ikke påvirke noget, som det ikke er muligt på dit system.,, til endelig at installere xdebug, vi skal bare følge flere skridt. ændrer fortegnelse (cd) mamp er forlængelser folder:, cd /ansøgninger /mamp /bin /php /php5.4.4 /l /php /forlængelse /no-debug-non-zts-20100525, du kan se vejen ved at se på den sidste linje af /ansøgninger /mamp /bin /php /php5.4.4 /conf /folkesundhedsprogrammet. ini, som det er, hvor vi skal hen. og backup - de eksisterende, xdebug.so, bare i tilfælde af:, mv xdebug.so xdebug. bak, så - din homebrew xdebug bygge:, kp /bar /lokale /kælder /php54 xdebug /2.2.1/xdebug.so /ansøgninger /mamp /bin /php /php5.4.4 /l /php /forlængelse /no-debug-non-zts-20100525 /,, hvis du ønsker at tvinge en kopi (cp) ordre til at træde i stedet for de eksisterende filer, bare gøre, cp - xkilde -. sidst, men ikke mindst, er vi nødt til at ændre den, php.ini, fil at læsse xdebug udvidelse fil.åben, /ansøgninger /mamp /bin /php /php5.4.4/conf/php.ini, med en tekst, redaktør af dit valg, til at gå helt i bund og uncomment sidste linje ved at fjerne semikolon foran.ikke tæt på, sagen endnu. nu genoptage mamp, gå til http: //////////////////////localhost mamp phpinfo. folkesundhedsprogrammet.hvis alt gik godt, skal du finde det inden for produktionen:,,,,, hvis det gjorde, ikke, arbejde, vær sikker på, at du virkelig ud over, xdebug.so, og har den rigtige vej i deres, php.ini, fil.,, start fejlfinding, før vi kan begynde at debugging -, er vi nødt til at for xdebug.derfor håber jeg, at du ikke lukke din, folkesundhedsprogrammet. ini, som vi er nødt til at tilføje denne linje til den bitre ende, efter det, zend_extension mulighed:, xdebug.remote_enable = på, redde og luk dine, php.ini, fil og genoptage mamp.gå til http: //////////////////////localhost mamp phpinfo.php igen og søge efter, xdebug.remote, på stedet.dine værdier bør se ud nøjagtig som min:,,,,, hvis de ikke følger samme procedure, du plejede at sige, remote_enable =, til andre erklæringer i slutningen af deres, php.ini, fil. nu, åben din ide af valg.du kan bruge xdebug med en række populære softwareløsninger som formørkelse, netbeans, phpstorm og også sublim tekst.som jeg sagde før, vil jeg bruge phpstorm miljøhandlingsprogram 6 til demo. i phpstorm, åben ansøgning præferencer og finde vej til "php. ser. dbgp proxy", på den venstre side, som i skærmbillede nedenfor:,,,, så vælg din personlige ide centrale.dette kan være en alfanumerisk streng, du vil have.jeg foretrækker at kalde det, phpstorm,, men, xdebug_ide, eller, myname, ville være fint.det er vigtigt at fastsætte "portvin", værdi, som vores standard 9000, xdebug konfiguration bruger denne havn for at forbinde den ide.,, tip: hvis du har brug for at tilpasse det, tilføje, xdebug.remote_port = portnumber, til din php.ini, fil. opmærksomhed: andre elementer kan ændre denne værdi indeni i phpstorm, så pas på, hvis noget ikke.,, klik på den røde lille telefon knap med et lille insekt til det næste på toppen toolbar.det bør blive grøn.det gør phpstorm lytte til nogen indgående xdebug forbindelser.,,,, og nu er vi nødt til at skabe noget ser.skabe en ny php fil, kald det, hvad du vil have og pasta i følgende kode:, <?php //erklærer datafil navn $datafile = data. json; //belastning af vores data, $data = loaddata ($datafile); //kan vi laste de oplysninger?hvis (!$data) (dør (blæse ikke belastning data)} hvis (!isset ($data ['hitcount '])) ($data ['hitcount'] = 1) andet ($data ['hitcount '] + = 1} $resultat = savedata ($data, $datafile); echo ($resultat).succes ":" fejl "; funktion loaddata ($fil) (//er filen eksisterer?hvis (!file_exists ($fil)) (//- skaber den //redde tom array - kodet til at json i det file_put_contents ($fil, json_encode (array())) //- json data $jsondata = file_get_contents ($fil); $phpdata = json_decode ($jsondata afkast ($); phpdata)?$phpdata: falske} funktion savedata ($array - fil) ($jsondata = json_encode ($array); $bytes = file_put_contents ($fil, $jsondata) afkast ($bytes.= 0).rigtigt: falske}, denne kodeks er falsy ved misligholdelse, men vi ordner det i øjeblikket i næste afsnit. og sørg for, at alt er reddet og åbne din browser til manuskriptet, vi har skabt.jeg vil bruge google krom til demo, men en browser vil gøre. lad os tage et øjeblik til at forstå, hvordan debugging - proces, der er igangsat.vores nuværende status er: xdebug mulighed for som zend udvidelse, lytte, havn 9000, for en småkage skal anføres i anmodningen.denne kage vil bære en ide nøgle, der bør være den samme som den, vi struktur i vores ide.som xdebug ser den kage med anmodning om, at det vil forsøge at forbinde en indikator, vores ide., så hvordan kan vi få den kage på plads?folkesundhedsprogrammet er, setcookie,?nej, men der er flere måder, også for at få dette arbejde uden en småkage, vil vi bruge lidt om forlængelse som en hjælper., installere "xdebug hjælper" "til din google krom - eller søgen efter en udvidelse, der vil gøre det til browseren, du bruger. når du har monteret udvidelse - tryk insekt, der er anført i deres adresse, bar og gå til valg.få den værdi for den ide centrale svarer til den nøgle, du valgte i din ide, som så:,,,, efter konfigureringen af det klik insekt - og udvælge, "ser" fra listen.mikrofonen skal blive grøn:,,,, gå tilbage til phpstorm eller din ide af valg og en "breakpoint".breakpoints som markører, på en strækning, der fortæller debugger at standse henrettelsen af manuskriptet til breakpoint. i phpstorm, du kan bare tilføje breakpoints ved at klikke pladsen ved siden af linjen numre på venstre side:,,,,,,, prøv lige at klikke, hvor den røde prik er opført på skærmbillede.du vil have en grænse på som dit manuskript, burde standse. note: du kan have flere breakpoints i så mange sager, som du gerne ville. nu er vi klar.gå tilbage til din browser, sørg for, kryb er grøn og lad den side til at forelægge den kage med næste anmodning.,, tip: hvis du sætter en småkage, vil det være til rådighed for den næste anmodning. hvis alt går efter planen, dette vindue skal dukke op i phpstorm at informere de indgående fejlcheck forbindelse:,,,, så vinduet ikke pop - up - for dig?lad os gøre nogle fejlsøgning og gentager, hvad der skal fastsættes, for at det kan lykkes:, bør du finde xdebug info indeni, phpinfo(), produktion.hvis ikke, så, xdebug.so, sag på rette sted og oprette din, php.ini, fil., der phpstorm dbgp indstillinger til din ide centrale f.eks. "phpstorm" portvin "9000.", phpstorm lytte til indgående fejlcheck forbindelser med den røde telefon ikon, som derefter bliver grøn, fastsætte en grænse. i din kode, eller vælge "run ¶ bræk i første linje i folkesundhedsprogrammet manuskripter", som skal være uafhængig af en eventuel breakpoints.bemærk, at dette ikke er egnet til praktisk brug. få en browser udvidelse at fastsætte xdebug kage., sørg for at den browser udvidelse har samme ide centrale i det valgte du inde i din ide., lade den side og phpstorm bør få forbindelse.,, hvis du får dialogen set på den tidligere billede, vær venlig at acceptere det.det vil tage dig til fejlcheck tilstand, som så:,,,, du kan se, at debugger stoppede manuskriptet er henrettelse ved din breakpoint, fremhæve linjen i blåt.folkesundhedsprogrammet er nu venter på, og som kontrolleres af xdebug, som er ved at blive styret af deres egne hænder nu. vores vigtigste arbejdsområde vil være lavere del af den ide, som viser allerede nogle oplysninger om den løbende manuskript (superglobals).,,,, og du kan se på det?der er kage sætter vi bare starte debugging - samling.nu kan du klikke gennem superglobals og kontrollere deres værdier i dette øjeblik.php venter. der er ingen tidsfrist, i det mindste ikke misligholdelse 30 sekunder. på den venstre side, vil du se et par knapper.for nu, kun "spille" og "stop", er af interesse for os.den grønne play knappen vil genoptage manuskriptet.hvis der er en anden breakpoint i kodeksen, manuskript vil fortsætte, indtil det når breakpoint og stoppe igen. den røde knap afbryder manuskript.ligesom folkesundhedsprogrammet er udgang, eller dø, ville gøre.,,,, så de virkelig interessante i den øvre del af fejlcheck vindue:,,,, lad os hurtigt, tjek dem:,, hen over,: skridt en linje videre.,, gå ind i, hvis den blå linje viser f.eks. en funktion, den knap, lad os gå gennem indsigt i den funktion,.,, kom ud, hvis du gik i en funktion og vil ud før udgangen er nået, bare kom ud.,, løb til markør, lad os sige, at for eksempel, din fil er 100 linjer og din grænse blev fastsat på linje to for at undersøge noget.nu du vil hurtigt løbe til det punkt hvor du klikkede bare din markør til - denne her er til dig.kan du klikke, "skridt", n, n - gange), nu skal du ikke bekymre dig, som du xdebug du hurtigt vil tilpasse sig de genveje på tastaturet, faktisk debugging - nogle eksempel kode. jeg har allerede sagt, at den kode, du kopiere /limet er falsy, så du bliver nødt til at ser det.begynde at træde over koden, redegørelse fra erklæring.,, konstaterer, at den blå linje kun stop på linjer, der indeholder faktisk en ordre.whitespace og bemærkninger vil blive forladt.,, når de fungerer opfordring til, loaddata, behøver ikke træde i det, bare gå over og standse den, hvis udtalelse.,,,, du kan se to nye variabler i "variabler" panel på bunden af skærm.hvorfor har de $data, variable afkast falsk?det virker, som om det skulle have gjort sit arbejde.lad os tage et kig.gå tilbage til linje syv træde i funktion opfordrer - > bam!vi får et signal om, at vi ikke kan "tilbage".for at få din debugger på linie syv igen, er du nødt til at stoppe denne samling og lade den side i browseren.gør det og træde i funktion kalder denne gang. med den tilbage, inden i den erklæring, loaddata, funktion og se, hvad der er sket:,,,,,,,, $phpdata, system er tom.de vender tilbage, erklæring bruger en ternære operatør til at opdage det, til at vende tilbage.og det vil vende tilbage, falske, for en tom array., fastsætte den linje, at sige: tilbage $phpdata;, som json_decode, vil vende tilbage til oplysningerne eller, for, om fiasko.stop nu ser samling, lad din browser, og træd over funktion her.,,,, og nu synes det, som om vi stadig har et problem, når vi træder ind i den tilstand.vær sød at ordne den betingelse, at anvende, is_null(), til at afsløre, hvad der sker, hvis (is_null ($data)) (dør (blæse ikke belastning data)}, nu er det op til dig at forsøge at gå lidt rundt.jeg vil foreslå, at vende tilbage til den oprindelige version af manuskriptet falsy, ser det med echo, og derefter sammenligne, hvordan det føles i forhold til at bruge xdebug.,, konklusion i denne artikel, du skulle have fået en masse nye viden.tøv ikke med at læse den igen. og for at hjælpe en ven, der er oprettet xdebug - noget bedre end det!du kan prøve at erstatte deres sædvanlige fejlcheck opførsel ved hjælp af xdebug i stedet.især med større, samt projekter, som de bliver meget lettere at ser og endda nå op på strømmen, hvis du ikke får noget lige med det samme. bemærker, at dette blot er toppen af isbjerget.xdebug giver meget mere magt, som skal undersøges. det, du er velkommen til at stille spørgsmål i de bemærkninger, og lad mig vide, hvad du synes.
xdebug
Previous:behat for resten af os