Het ontdekken范Symfob娱乐下载ony内部
Het ontdekken范Symfob娱乐下载ony内部
甚至我们gebruikenob娱乐下载 Symfony al geruime tijd om krachtige applicatie te ontwikkelen,低平火山口het grootste deel van de代码死门德applicatie wordt uitgevoerd komt范Symfony。即使洼地honderd regels代码tegenover duizenden regels代码。
本土知识会graag begrijpen锄dingen 8 de schermen威尔。在本土知识本altijd gefascineerd geweest门工具死我helpen begrijpen锄dingen威尔。De eerste科尔dat本土知识甚至stapsgewijze调试器gebruikte De eerste科尔dat本土知识ptrace
ontdekte zullen magische herinneringen blijven。
会我打赌begrijpen锄Symfony werktob娱乐下载吗?Tijd om出席motorkap te kijken en te ontdekken锄Symfony jouwob娱乐下载 applicatie laat威尔。甚至在plaats van te beschrijven锄Symfob娱乐下载ony HTTP-verzoek vanuit甚至theoretisch perspectief behandelt,窟则saai邹zijn,服务员我们黑焰gebruiken om窟visuele代表te krijgen en enkele geavanceerde onderwerpen长te snijden。
ob娱乐下载Symfony内部begrijpen遇到黑焰
我知道阿尔dat阿莱HTTP-verzoeken沃顿bediend门甚至enkel toegangspunt: het公共/ index . php
-bestand。低平火山口窟gebeurt呃daarna ?锄头沃顿控制器aangeroepen吗?
变迟我们de Engelse主页在多彩的遇到黑焰profileren通过德黑焰browserextensie:
1
美元ob娱乐下载symfony远程:开放
通过de rechtstreeks命令行:
1
美元黑焰旋度的symfony云:enob娱乐下载v:ob直播app url——管——主/
Ga naar de Tijdlijn -weergave van het profiel,我ziet丹专业als het volgende:
op de tijdlijn悬停在de gekleurde balken voor米尔informatie iedere调用;我leert佐薇米尔在锄Symfony werkt:ob娱乐下载
- Het belangrijkste startpunt是
公共/ index . php
; - 德
内核:处理()
方法verwerkt het verzoek; - Het roept德
HttpKernel
长,死enkele事件uitstuurt; - Het Het eerste事件
RequestEvent
; - 德
ControllerResolver: getController ()
方法wordt aangeroepen om te bepalen维尔克控制器酩悦沃顿opgeroepen voor de inkomende URL; - 德
ControllerResolver: getArguments ()
方法wordt aangeroepen om te bepalen维尔克河畔argumenten de控制器moeten沃顿doorgegeven (de param-converter wordt aangeroepen); - 德
ConferenceController:指数()
方法wordt aangeroepen en de meeste van onze代码wordt daar uitgevoerd; - 德
ConferenceRepository: findAll ()
方法haalt阿莱conferenties op外的数据库(让op de verbinding de数据库通过见面PDO: __construct ()
); - 德
树枝\环境::渲染()
方法rendert de模板; - 德
ResponseEvent
在德FinishRequestEvent
事件危险uitgestuurd低平火山口het lijkt er op dat er geen听众zijn geregistreerd aangezien泽尔格snel uitgevoerd沃顿。
德tijdlijn甚至handige许多om te begrijpen锄代码elkaar青春痘;窟范不是菅直人科曼als我op甚至项目酩悦威尔dat门iemand安德斯ontwikkeld werd。
概要νdezelfde pagina van de lokale de ontwikkelomgeving机:
1
美元黑焰旋度的symfony varob娱乐下载:出口ob娱乐下载SYMFONY_PROJECT_DEFAULT_ROUTE_URL没有/
het profiel开放。我邹doorgestuurd moeten沃顿naar de调用图weergave omdat het verzoek跟snel是在de tijdlijn vrij leeg邹zijn:
河畔Begrijp我窟er手?De HTTP缓存是ingeschakeld en daardoor profileren laag我们德Symfonob娱乐下载y HTTP缓存。zal Aangezien de pagina de缓存青春痘HttpCache \商店:restoreResponse ()
de http响应外的de缓存nemen en wordt de控制器nooit aangeroepen。
Schakel de cache-laag外的公共/ index . php
在德zoals vorige探针het opnieuw堵塞。我菅直人meteen虽然dat het profiel er跟安德斯uitziet:
De belangrijkste verschillen zijn De volgende:
- Het
TerminateEvent
,dat不行zichtbaar综合国力,neemt甚至van de groot百分比uitvoeringstijd beslag;als我打赌kijkt, zie我dat说het事件是dat verantwoordelijk voor het opslaan van de gegevens van de Symfony分析器死tijdens de请求了ob娱乐下载verzameld; - 出席
ConferenceController:指数()
wordt de方法SubRequestHandler:处理()
uitgevoerd死ESI呈现(daarom hebben我们naar矫饰的电话分析器:saveProfile ()
甚至,即使voor het hoofdrequest en voor de应急服务国际公司)。
Verken de tijdlijn om米尔te weten te科曼;schakel在naar de调用图weergave om甚至安德利果汁beeld te krijgen van dezelfde gegevens。
Zoals我们zojuist hebben ontdekt de代码死tijdens ontwikkeling en多彩的wordt uitgevoerd跟安德斯。德ontwikkelomgeving langzamer omdat De Symfoob娱乐下载ny分析器veel gegevens probeert te verzamelen om het debuggen te vergemakkelijken。在德productieomgeving Daarom酩悦我altijd profileren,本书lokaal。
Enkele有趣的experimenten:概要文件甚至foutpagina,概要文件/
pagina (dat甚至重定向),即使API的资源。麋鹿profiel vertelt我专业在锄头Symfony werkt米尔,维尔克ob娱乐下载类/方法沃顿aangeroepen维尔克operaties zwaar doorwegen恩维尔克licht zijn。
德黑焰调试插件gebruiken
Standaard verwijdert黑焰阿莱方法调用死不行belangrijk genoeg zijn, om te voorkomen dat我酩悦威尔见到zware数据集在格罗特grafieken。Bij het gebruik范黑焰als调试工具是het典型地打赌te behouden om阿莱调用。Deze functionaliteit wordt门德调试插件toegevoegd。
Gebruik vanaf de命令行德——调试
参数:
1 2
美元黑焰,调试旋度的symfony var:ob娱乐下载出口ob娱乐下载SYMFONY_PROJECT_DEFAULT_ROUTE_URL没有/美元黑焰,调试卷symfony云:env: url—ob娱乐下载—管——主/ob直播app
甚至在德productieomgeving zie我bijvoorbeeld dat bestand genaamd.env.local.php
wordt ingeladen:
Waar komt说vandaan吗?平台。sh doet enkele optimalisaties bij het deployen van甚至Symob娱乐下载fony applicatie zoals het optimaliseren van de作曲家自动装卸机(——optimize-autoloader apcu-autoloader——classmap-authoritative
)。书de omgevingsvariabelen在het死去.env
het bestand zijn gedefinieerd,沃顿geoptimaliseerd大门.env.local.php
bestand te genereren (om te voorkomen dat het bestand bij麋鹿verzoek opnieuw wordt geparsed):
1
美元ob娱乐下载symfony运行作曲家dump-env刺激
甚至是黑焰门krachtige工具死我helpt inzicht te krijgen锄代码wordt uitgevoerd门PHP。Het verbeteren van prestaties是slechts甚至许多om甚至分析器te gebruiken。
即使Stap-debugger gebruiken Xdebug会面
遇到behulp van Blackfire-tijdlijnen en aanroep-grafieken kunnen ontwikkelaars visualiseren维尔克bestanden / functies methoden门德php引擎沃顿uitgevoerd om van de代码打赌te begrijpen het项目。
即使安德利果汁很多om de uitvoering te volgen van de代码,甚至是门调试器堵塞te gebruiken, zoalsXdebug。见过甚至堵塞调试器kunnen ontwikkelaars interactief门德php代码lopen om de controle-stroom te debuggen en gegevensstructuren te onderzoeken。Het是erg handig om onverwacht gedrag te debuggen en Het vervangt de gebruikelijke”var_dump() /退出()”调试techniek。
段eerst de PHP-extensiexdebug
。Controleer het geinstalleerd门de volgende opdracht外的te voeren:
1
美元ob娱乐下载symfony php - v
我邹Xdebug de产出moeten虽然早:
1 2 3 4 5 6
PHP 8.0.1 (cli)(建:2021年1月13日08:22:35)(nt)版权(c) PHP Zend引擎v4.0.1,版权(c) Zend技术和Zend OPcache v8.0.1,版权(c),通过与Xdebug v3.0.2 Zend Technologies,版权(c) 2002 - 2021,通过与黑焰戴瑞克Rethans v1.49.0 ~ linux-x64-non_zts80, https://blackfire。io,黑焰
U kunt显得controleren Xdebug是ingeschakeld voor PHP-FPM门德浏览器te openen en op de链接”视图phpinfo ()“te klikken wanneer我op het Symfony-logo van de debug-toolbob娱乐下载ar hovert:
Schakelν德调试
否定van Xdebug:
Xdebug stuurt standaard gegevens naar关口9003 van de lokale主机。
Het activeren van Xdebug菅直人op veel manieren沃顿gedaan,低平火山口Het gemakkelijkst是om Xdebug te gebruiken vanaf jouw IDE。我们在说hoofdstuk zullen Visual Studio代码gebruiken om te demonstreren锄het werkt。段德PHP调试广泛的门德的快速开放-functie te starten (Ctrl + P
),plak het volgende突击队,druk op输入:
1
ext安装felixfbecker.php-debug
Maak het volgende configuratiebestand长:
Ga vanuit Visual Studio代码,terwijl我我在jouw projectmap bevindt, naar de调试器在公里op de groene afspeelknop遇到het标签Xdebug“听”:
Als我naar浏览器gaat en ververst丹邹de IDE automatisch de焦点moeten krijgen,窟betekent dat de debug-sessie klaar。Standaard一切即使breekpunt, du de uitvoering stopt bij de eerste instructie。Het河畔是丹周素卿om de huidige variabelen te inspecteren,在te stappen de代码,在te stappen de代码,…
“一切”Bij het debuggen菅直人我het breekpunt uitschakelen en expliciet breekpunten instellen jouw代码中的代码。
Als我nieuw弯曲stap-debuggers相遇,利兹丹德uitstekende教程voor Visual Studio代码,waarin一切visueel wordt uitgelegd。