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('>'); }