本文整理汇总了PHP中PHPTAL_Php_CodeWriter类的典型用法代码示例。如果您正苦于以下问题:PHP PHPTAL_Php_CodeWriter类的具体用法?PHP PHPTAL_Php_CodeWriter怎么用?PHP PHPTAL_Php_CodeWriter使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了PHPTAL_Php_CodeWriter类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: doEchoAttribute
protected function doEchoAttribute(PHPTAL_Php_CodeWriter $codewriter, $code)
{
if ($this->_echoType === self::ECHO_TEXT) {
$codewriter->doEcho($code);
} else {
$codewriter->doEchoRaw($code);
}
}
示例2: generateCode
public function generateCode(PHPTAL_Php_CodeWriter $codewriter)
{
if ($codewriter->getOutputMode() === PHPTAL::HTML5) {
$codewriter->setDocType('<!DOCTYPE html>');
} else {
$codewriter->setDocType($this->getValueEscaped());
}
$codewriter->doDoctype();
}
示例3: generateCode
public function generateCode(PHPTAL_Php_CodeWriter $codewriter)
{
if (preg_match('/^<\\?(?:php|[=\\s])/i', $this->getValueEscaped())) {
// block will be executed as PHP
$codewriter->pushHTML($this->getValueEscaped());
} else {
$codewriter->doEchoRaw("'<'");
$codewriter->pushHTML(substr($codewriter->interpolateHTML($this->getValueEscaped()), 1));
}
}
示例4: after
public function after(PHPTAL_Php_CodeWriter $codewriter)
{
$codewriter->doEval('file_put_contents(' . $codewriter->str($codewriter->getCacheFilesBaseName()) . '.md5(' . $this->cache_tag . '), ob_get_flush())');
$codewriter->doElse();
$codewriter->doEval('readfile(' . $codewriter->str($codewriter->getCacheFilesBaseName()) . '.md5(' . $this->cache_tag . '))');
$codewriter->doEnd('if');
}
示例5: before
public function before(PHPTAL_Php_CodeWriter $codewriter)
{
$expression = $this->extractEchoType($this->expression);
$code = $codewriter->evaluateExpression($expression);
if (is_array($code)) {
return $this->generateChainedContent($codewriter, $code);
}
if ($code == PHPTAL_Php_TalesInternal::NOTHING_KEYWORD) {
return;
}
if ($code == PHPTAL_Php_TalesInternal::DEFAULT_KEYWORD) {
return $this->generateDefault($codewriter);
}
$this->doEchoAttribute($codewriter, $code);
}
示例6: after
public function after(PHPTAL_Php_CodeWriter $codewriter)
{
$codewriter->doEval('file_put_contents(' . $this->cache_filename_var . ', ob_get_flush())');
$codewriter->doElse();
$codewriter->doEval('readfile(' . $this->cache_filename_var . ')');
$codewriter->doEnd('if');
$codewriter->recycleTempVariable($this->cache_filename_var);
}
示例7: after
public function after(PHPTAL_Php_CodeWriter $codewriter)
{
if ($this->function_name !== null) {
$codewriter->doEnd();
$codewriter->pushCode('$ctx->fillSlotCallback(' . $codewriter->str($this->expression) . ', ' . $codewriter->str($this->function_name) . ', $_thistpl, clone $tpl)');
} else {
$codewriter->pushCode('$ctx->fillSlot(' . $codewriter->str($this->expression) . ', ob_get_clean())');
}
}
示例8: testFunctionsGeneration
function testFunctionsGeneration()
{
$state = new PHPTAL_Php_State($this->newPHPTAL());
$codewriter = new PHPTAL_Php_CodeWriter($state);
$codewriter->doFunction('test1', '$tpl');
$codewriter->pushHTML($codewriter->interpolateHTML('test1'));
$codewriter->doFunction('test2', '$tpl');
$codewriter->pushHTML('test2');
$codewriter->doEnd();
$codewriter->pushHTML('test1');
$codewriter->doEnd();
$res = $codewriter->getResult();
$exp = <<<EOS
<?php function test2(\$tpl) {?>test2<?php}?>
<?php function test1(\$tpl) {?>test1test1<?php}?>
EOS;
$res = normalize_phpsource($res, true);
$exp = normalize_phpsource($exp, true);
$this->assertEquals($exp, $res);
}
示例9: after
public function after(PHPTAL_Php_CodeWriter $codewriter)
{
// end of if PROCEED
$codewriter->doEnd();
// if trigger found, notify the end of the node
$codewriter->doIf($this->var);
$codewriter->pushCode($this->var . '->end(' . $codewriter->str($this->expression) . ', $tpl)');
$codewriter->doEnd();
$codewriter->recycleTempVariable($this->var);
}
示例10: generateCode
public function generateCode(PHPTAL_Php_CodeWriter $codewriter)
{
$mode = $codewriter->getOutputMode();
$value = $this->getValueEscaped();
$inCDATAelement = PHPTAL_Dom_Defs::getInstance()->isCDATAElementInHTML($this->parentNode->getNamespaceURI(), $this->parentNode->getLocalName());
// in HTML5 must limit it to <script> and <style>
if ($mode === PHPTAL::HTML5 && $inCDATAelement) {
$codewriter->pushHTML($codewriter->interpolateCDATA(str_replace('</', '<\\/', $value)));
} elseif ($mode === PHPTAL::XHTML && $inCDATAelement || $mode === PHPTAL::XML && preg_match('/[<>&]/', $value) || $mode !== PHPTAL::HTML5 && preg_match('/<\\?|\\${structure/', $value)) {
// in text/html "</" is dangerous and the only sensible way to escape is ECMAScript string escapes.
if ($mode === PHPTAL::XHTML) {
$value = str_replace('</', '<\\/', $value);
}
$codewriter->pushHTML($codewriter->interpolateCDATA('<![CDATA[' . $value . ']]>'));
} else {
$codewriter->pushHTML($codewriter->interpolateHTML(htmlspecialchars($value, ENT_QUOTES, $codewriter->getEncoding())));
}
}
示例11: generateCode
public function generateCode(PHPTAL_Dom_Element $treeGen)
{
$codewriter = new PHPTAL_Php_CodeWriter($this->_state);
$codewriter->doComment("\n*** DO NOT EDIT THIS FILE ***\n\nGenerated by PHPTAL from " . $this->_sourceFile . " (edit that file instead)");
$codewriter->doFunction($this->_functionName, '$tpl, $ctx');
$codewriter->setFunctionPrefix($this->_functionName . "_");
$codewriter->doSetVar('$_thistpl', '$tpl');
$codewriter->doSetVar('$_translator', '$tpl->getTranslator()');
$treeGen->generateCode($codewriter);
$codewriter->doEnd();
return $codewriter->getResult();
}
示例12: before
public function before(PHPTAL_Php_CodeWriter $codewriter)
{
// tal:replace="" => do nothing and ignore node
if (trim($this->expression) == "") {
return;
}
$expression = $this->extractEchoType($this->expression);
$code = $codewriter->evaluateExpression($expression);
// chained expression
if (is_array($code)) {
return $this->replaceByChainedExpression($codewriter, $code);
}
// nothing do nothing
if ($code == PHPTAL_Php_TalesInternal::NOTHING_KEYWORD) {
return;
}
// default generate default tag content
if ($code == PHPTAL_Php_TalesInternal::DEFAULT_KEYWORD) {
return $this->generateDefault($codewriter);
}
// replace tag with result of expression
$this->doEchoAttribute($codewriter, $code);
}
示例13: before
/**
* Attach html5 data attributes to element.
*
* Called before generating the compiled php for an attribute.
*
* Example (where 'element' is a Zend_Form_Element):
*
* <input ztal:data-attributes="element" />
*
* Within a Zend_Form implementation:
*
* $this->addElement('text', 'example', array(
* 'data' => array(
* 'hike' => 'foo',
* 'bar' => '1337',
* )
* ));
*
* @param PHPTAL_Php_CodeWriter $codewriter The code writer.
*
* @return void
*/
public function before(\PHPTAL_Php_CodeWriter $codewriter)
{
$args = explode(',', $this->expression);
$zendFormElement = $codewriter->evaluateExpression(trim($args[0]));
$dataAttributes = $codewriter->createTempVariable();
$tmp = $codewriter->createTempVariable();
$assignment = $tmp . ' = ' . $zendFormElement . ';' . PHP_EOL;
$attributes = '$attributes = ' . $tmp . '->getAttribs();';
if (count($args) > 1) {
$option = $codewriter->evaluateExpression(trim($args[1]));
$optionVar = $codewriter->createTempVariable();
$assignment .= $optionVar . ' = ' . $option . ';' . PHP_EOL;
$attributes = '$attributes = ' . $tmp . '->getAttribsForOption(' . $optionVar . ');';
}
// PHPTAL changed the method signature for phptal_escape in v1.2.3.
if (defined('PHPTAL_VERSION') && version_compare(PHPTAL_VERSION, '1.2.3', '>=')) {
$escapeFunctionCall = 'phptal_escape($value, \'UTF-8\')';
} else {
$escapeFunctionCall = 'phptal_escape($value)';
}
/**
* Compiled code will loop through a Zend_Form_Element attributes
* looking for the 'data' key, and assign it to a known temporary
* variable.
*/
$source = '
' . $assignment . '
if ((is_object(' . $tmp . ')
&& ' . $tmp . ' instanceof Zend_Form_Element)
) {
' . $attributes . PHP_EOL . '
' . $dataAttributes . ' = " ";
if (isset($attributes["data"]) && is_array($attributes["data"])) {
foreach ($attributes["data"] as $key => $value) {
' . $dataAttributes . ' .= "data-{$key}=\\"" . ' . $escapeFunctionCall . ' . "\\" ";
}
' . $dataAttributes . ' = rtrim(' . $dataAttributes . ');
}
}';
// persist the code for compilation
$codewriter->pushCode($source);
// get the current DOM element to pull in the attributes
$this->phpelement->getOrCreateAttributeNode('ztal:data-attributes')->overwriteFullWithVariable($dataAttributes);
}
示例14: before
public function before(PHPTAL_Php_CodeWriter $codewriter)
{
$escape = true;
if (preg_match('/^(text|structure)(?:\\s+(.*)|\\s*$)/', $this->expression, $m)) {
if ($m[1] == 'structure') {
$escape = false;
}
$this->expression = isset($m[2]) ? $m[2] : '';
}
// if no expression is given, the content of the node is used as
// a translation key
if (strlen(trim($this->expression)) == 0) {
$key = $this->_getTranslationKey($this->phpelement, !$escape, $codewriter->getEncoding());
$key = trim(preg_replace('/\\s+/sm' . ($codewriter->getEncoding() == 'UTF-8' ? 'u' : ''), ' ', $key));
$code = $codewriter->str($key);
} else {
$code = $codewriter->evaluateExpression($this->expression);
}
$this->_prepareNames($codewriter, $this->phpelement);
$codewriter->pushCode('echo $_translator->translate(' . $code . ',' . ($escape ? 'true' : 'false') . ');');
}
示例15: after
public function after(PHPTAL_Php_CodeWriter $codewriter)
{
// restore source
$code = $codewriter->getTranslatorReference() . '->setSource(array_pop($_i18n_sources))';
$codewriter->pushCode($code);
}