Я начал изучать Symfony2, я читаю книгу.
Мне было любопытно посмотреть, какой экземпляр хранится в переменной $ view, доступной как вспомогательная переменная внутри шаблона Symfony, поэтому я сделал этот шаблон:
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html"/>
<meta charset="utf-8"/>
<title>PHP Template</title>
</head>
<body>
Number: <strong><?= $number; ?></strong>
<?php var_dump($view); exit;?>
</body>
</html>
Но когда я запускаю страницу, которую застрял браузер, и, глядя на монитор активности, я вижу «Google Chrome Helper», который истощает процессор … Почему все это происходит?
Спасибо за внимание!
РЕДАКТИРОВАТЬ: это часть начального вывода:
object(Symfony\Bundle\FrameworkBundle\Templating\TimedPhpEngine)#311 (14) {
["stopwatch":protected]=> object(Symfony\Component\Stopwatch\Stopwatch)#204 (2) {
["sections":"Symfony\Component\Stopwatch\Stopwatch":private]=> array(1) { ["__root__"]=>
object(Symfony\Component\Stopwatch\Section)#203 (4) {
["events":"Symfony\Component\Stopwatch\Section":private]=> array(1) { ["__section__.child"]=>
object(Symfony\Component\Stopwatch\StopwatchEvent)#107 (4) {
["periods":"Symfony\Component\Stopwatch\StopwatchEvent":private]=> array(0) { } ["origin":"Symfony\Component\Stopwatch\StopwatchEvent":private]=> float(1.41716199817E+12)
["category":"Symfony\Component\Stopwatch\StopwatchEvent":private]=> string(7) "section"["started":"Symfony\Component\Stopwatch\StopwatchEvent":private]=> array(1) { [0]=> float(0) }}}
["origin":"Symfony\Component\Stopwatch\Section":private]=> NULL
["id":"Symfony\Component\Stopwatch\Section":private]=> NULL
["children":"Symfony\Component\Stopwatch\Section":private]=> array(1) { [0]=>
object(Symfony\Component\Stopwatch\Section)#106 (4) {
["events":"Symfony\Component\Stopwatch\Section":private]=> array(25) { ["__section__"]=>
object(Symfony\Component\Stopwatch\StopwatchEvent)#105 (4) {
["periods":"Symfony\Component\Stopwatch\StopwatchEvent":private]=> array(0) { }
["origin":"Symfony\Component\Stopwatch\StopwatchEvent":private]=> float(1.41716199817E+12)
["category":"Symfony\Component\Stopwatch\StopwatchEvent":private]=> string(7) "default"["started":"Symfony\Component\Stopwatch\StopwatchEvent":private]=> array(1) { [0]=> float(0.1)}}
["kernel.request"]=> object(Symfony\Component\Stopwatch\StopwatchEvent)#104 (4) {
["periods":"Symfony\Component\Stopwatch\StopwatchEvent":private]=> array(1) { [0]=>
object(Symfony\Component\Stopwatch\StopwatchPeriod)#75 (3) {
["start":"Symfony\Component\Stopwatch\StopwatchPeriod":private]=> int(0)
["end":"Symfony\Component\Stopwatch\StopwatchPeriod":private]=> int(84)
["memory":"Symfony\Component\Stopwatch\StopwatchPeriod":private]=> int(6553600) } }
["origin":"Symfony\Component\Stopwatch\StopwatchEvent":private]=> float(1.41716199817E+12)
["category":"Symfony\Component\Stopwatch\StopwatchEvent":private]=> string(7) "section"["started":"Symfony\Component\Stopwatch\StopwatchEvent":private]=> array(0) { } }
["Symfony\Component\HttpKernel\EventListener\ErrorsLoggerListener"]=>
object(Symfony\Component\Stopwatch\StopwatchEvent)#103 (4) {
["periods":"Symfony\Component\Stopwatch\StopwatchEvent":private]=> array(3) { [0]=>
object(Symfony\Component\Stopwatch\StopwatchPeriod)#102 (3) {
["start":"Symfony\Component\Stopwatch\StopwatchPeriod":private]=> int(0)
["end":"Symfony\Component\Stopwatch\StopwatchPeriod":private]=> int(10)
["memory":"Symfony\Component\Stopwatch\StopwatchPeriod":private]=> int(6291456) } [1]=>
object(Symfony\Component\Stopwatch\StopwatchPeriod)#101 (3) {
["start":"Symfony\Component\Stopwatch\StopwatchPeriod":private]=> int(10)
["end":"Symfony\Component\Stopwatch\StopwatchPeriod":private]=> int(10)
["memory":"Symfony\Component\Stopwatch\StopwatchPeriod":private]=> int(6291456) } [2]=>
object(Symfony\Component\Stopwatch\StopwatchPeriod)#100 (3) {
["start":"Symfony\Component\Stopwatch\StopwatchPeriod":private]=> int(10)
["end":"Symfony\Component\Stopwatch\StopwatchPeriod":private]=> int(10)
["memory":"Symfony\Component\Stopwatch\StopwatchPeriod":private]=> int(6291456) } }
["origin":"Symfony\Component\Stopwatch\StopwatchEvent":private]=> float(1.41716199817E+12)
["category":"Symfony\Component\Stopwatch\StopwatchEvent":private]=> string(14) "event_listener"["started":"Symfony\Component\Stopwatch\StopwatchEvent":private]=> array(0) { } }
["Symfony\Component\HttpKernel\EventListener\DebugHandlersListener"]=>
object(Symfony\Component\Stopwatch\StopwatchEvent)#99 (4) {
["periods":"Symfony\Component\Stopwatch\StopwatchEvent":private]=> array(1) { [0]=> object(Symfony\Component\Stopwatch\StopwatchPeriod)#98 (3) { ["start":"Symfony\Component\Stopwatch\StopwatchPeriod":private]=> int(10) ["end":"Symfony\Component\Stopwatch\StopwatchPeriod":private]=> int(10) ["memory":"Symfony\Component\Stopwatch\StopwatchPeriod":private]=> int(6291456) } } ["origin":"Symfony\Component\Stopwatch\StopwatchEvent":private]=> float(1.41716199817E+12) ["category":"Symfony\Component\Stopwatch\StopwatchEvent":private]=> string(14) "event_listener" ["started":"Symfony\Component\Stopwatch\StopwatchEvent":private]=> array(0) { } } ["Symfony\Component\HttpKernel\EventListener\Profile
Пожалуйста, поправьте меня, потому что я только предполагаю:
Этот механизм шаблонов PHP (как я видел из документации) в разы затрачивает время на рендеринг шаблона во время его рендеринга, а компонент Секундомер обрабатывает это поведение внутренне, так как механизм шаблонов останавливает синхронизацию рендеринга только после того, как шаблон действительно завершится. , но, как это ни парадоксально, это не закончится, потому что механизм шаблонов будет изменяться снова и снова, пока шаблон визуализируется, таким образом, бесконечный цикл, я прав?
Я подозреваю, что представление имеет отношение к другому объекту, которое отражается назад к представлению и приводит к рекурсии.
Обычно в Symfony вы можете использовать \Doctrine\Common\Util\Debug::dump($view)
но я не уверен, что он доступен в PHP-шаблонах.
Я бы посоветовал вам попробовать шаблоны веточек, они классные.
Установите Xdebug:
http://xdebug.org/docs/install
Или попробуйте это:
https://github.com/raulfraile/LadybugBundle
Взгляните на новый вар-самосвал Symfony: https://github.com/symfony/var-dumper
Добавьте к вашему composer.json:
"require-dev": {
...,
"symfony/var-dumper": "@dev"}
Использование: дамп ($ Var);