Я начал изучать Symfony2, я читаю книгу.
Мне было интересно узнать, какой экземпляр хранится внутри переменной $ view, доступной как вспомогательный var внутри шаблона 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", который исчерпывает процессор... Почему все это происходит?
Спасибо за внимание!
EDIT: это часть исходного результата:
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-шаблонах.
Id советует вам попробовать шаблоны для завивки, они потрясающие.
Установите Xdebug: http://xdebug.org/docs/install
Или попробуйте это: https://github.com/raulfraile/LadybugBundle
Взгляните на новый вармоузел Symfony: https://github.com/symfony/var-dumper
Добавьте к своему композитору.json:
"require-dev": {
...,
"symfony/var-dumper": "@dev"
}
Использование: дамп ($ var);