本文整理汇总了PHP中PHPTAL_Php_CodeWriter::doFunction方法的典型用法代码示例。如果您正苦于以下问题:PHP PHPTAL_Php_CodeWriter::doFunction方法的具体用法?PHP PHPTAL_Php_CodeWriter::doFunction怎么用?PHP PHPTAL_Php_CodeWriter::doFunction使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PHPTAL_Php_CodeWriter
的用法示例。
在下文中一共展示了PHPTAL_Php_CodeWriter::doFunction方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: 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);
}
示例2: 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();
}
示例3: before
public function before(PHPTAL_Php_CodeWriter $codewriter)
{
if ($this->shouldUseCallback()) {
$function_base_name = 'slot_' . preg_replace('/[^a-z0-9]/', '_', $this->expression) . '_' . self::$uid++;
$codewriter->doFunction($function_base_name, 'PHPTAL $_thistpl, PHPTAL $tpl');
$this->function_name = $codewriter->getFunctionPrefix() . $function_base_name;
$codewriter->doSetVar('$ctx', '$tpl->getContext()');
$codewriter->doInitTranslator();
} else {
$codewriter->pushCode('ob_start()');
$this->function_name = null;
}
}
示例4: before
public function before(PHPTAL_Php_CodeWriter $codewriter)
{
$macroname = strtr(trim($this->expression), '-', '_');
if (!preg_match('/^[a-z0-9_]+$/i', $macroname)) {
throw new PHPTAL_ParserException('Bad macro name "' . $macroname . '"', $this->phpelement->getSourceFile(), $this->phpelement->getSourceLine());
}
if ($codewriter->functionExists($macroname)) {
throw new PHPTAL_TemplateException("Macro {$macroname} is defined twice", $this->phpelement->getSourceFile(), $this->phpelement->getSourceLine());
}
$codewriter->doFunction($macroname, 'PHPTAL $_thistpl, PHPTAL $tpl');
$codewriter->doSetVar('$tpl', 'clone $tpl');
$codewriter->doSetVar('$ctx', '$tpl->getContext()');
$codewriter->doInitTranslator();
$codewriter->doXmlDeclaration(true);
$codewriter->doDoctype(true);
}