protected function compileConditional(Node $node) { $type = $node->conditionType; $subject = $node->subject; if ($subject === 'block') { $subject = '$__block'; } if ($this->isVariable($subject)) { $subject = "isset({$subject}) ? {$subject} : false"; } if ($type === 'unless') { $type = 'if'; $subject = "!({$subject})"; } $isPrevConditional = $node->prev() && $node->prev()->type === 'conditional'; $isNextConditional = $node->next() && $node->next()->type === 'conditional' && $node->next()->conditionType !== 'if'; $prefix = $isPrevConditional ? '' : '<?php '; $suffix = $isNextConditional ? '' : '?>'; $phtml = $type === 'else' ? $this->createCode(' else {', $prefix) : $this->createCode("{$type} ({$subject}) {", $prefix); $phtml .= $this->compileChildren($node->children); $phtml .= $this->newLine() . $this->indent() . $this->createCode("}", '<?php ', $suffix); return $phtml; }