Ejemplo n.º 1
0
 protected function compileTag(Tag $aTag, ObjectContainer $aObjectContainer, TargetCodeOutputStream $aDev, CompilerManager $aCompilerManager)
 {
     $aDev->output('<');
     if ($aTag->isTail()) {
         $aDev->output('/');
     }
     $aDev->output($aTag->name());
     // 属性
     $aAttrs = $aTag->attributes();
     foreach ($aAttrs->valueIterator() as $aAttrVal) {
         $aDev->output(' ');
         // 具名属性
         if ($sName = $aAttrVal->name()) {
             $aDev->output($sName);
             $aDev->output('=');
         }
         $aDev->output($aAttrVal->quoteType());
         if ($aAttrCompiler = $aCompilerManager->compiler($aAttrVal)) {
             $aAttrCompiler->compile($aAttrVal, $aObjectContainer, $aDev, $aCompilerManager);
             get_class($aAttrCompiler);
         } else {
             if ($sName) {
                 $aDev->output(addcslashes($aAttrs->get($sName), $aAttrVal->quoteType() . '\\'));
             } else {
                 $aDev->output(addcslashes($aAttrs->source(), $aAttrVal->quoteType() . '\\'));
             }
         }
         $aDev->output($aAttrVal->quoteType());
     }
     if ($aTag->isSingle()) {
         $aDev->output(' /');
     }
     $aDev->output('>');
 }