PHP 标签

Testing Is Documentation

tests/View/Compiler/CompilerPhpTest.phpPHP 标签 - 图1

PHP 代码可以和标签在模板文件中混合使用,可以在模板文件里面书写任意的 PHP 语句代码 ,包括下面两种方式。

基本使用

  1. public function testBaseUse(): void
  2. {
  3. $parser = $this->createParser();
  4. $source = <<<'eot'
  5. <php>echo 'Hello,world!';</php>
  6. eot;
  7. $compiled = <<<'eot'
  8. <?php echo 'Hello,world!'; ?>
  9. eot;
  10. $this->assertSame($compiled, $parser->doCompile($source, null, true));
  11. }

原始 PHP

  1. public function testPhpSelf(): void
  2. {
  3. $parser = $this->createParser();
  4. $source = <<<'eot'
  5. <?php echo 'Hello,world!'; ?>
  6. eot;
  7. $compiled = <<<'eot'
  8. <?php echo 'Hello,world!'; ?>
  9. eot;
  10. $this->assertSame($compiled, $parser->doCompile($source, null, true));
  11. }

TIP

不过这种方式来使用 PHP 脚本,这是我们大力推荐的写法,用最原始的 PHP 开发应用是我们共同的追求。

PHP 内部不能使用标签

PHP 标签或者 PHP 代码里面就不能再使用标签(包括 code 标签和 node 标签),因此下面的几种方式都是无效的:

  1. public function testErrorExample(): void
  2. {
  3. $parser = $this->createParser();
  4. // 错误的写法
  5. $source = <<<'eot'
  6. <php>
  7. {if $hello == ''}
  8. Yet !
  9. {/if}
  10. </php>
  11. eot;
  12. $compiled = <<<'eot'
  13. <?php
  14. <?php if ($hello == ''): ?>
  15. Yet !
  16. <?php endif; ?>
  17. ?>
  18. eot;
  19. $this->assertSame($compiled, $parser->doCompile($source, null, true));
  20. }

TIP

程序运行结果是抛出致命错误,这种写法是错误的。