예제 #1
0
 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;
 }