tacman / blade-parser
Requires
- ext-json: *
- nikic/php-parser: ^4.10.3
- spatie/ray: ^1.20
Requires (Dev)
- phpunit/phpunit: ^8.5 || ^9.0
This package is auto-updated.
Last update: 2024-09-19 05:23:36 UTC
README
这是一个实验性的Blade解析器和编译器。它能够解析Blade模板,并重新生成它们。
解析Blade文档
要解析文档,首先创建Blade解析器的一个实例
use Stillat\BladeParser\Parsers\Blade; $parser = new Blade();
一旦有了解析器实例,可以使用parse($input)
方法接收一个Stillat\BladeParser\Documents\Template
实例
use Stillat\BladeParser\Parsers\Blade; $parser = new Blade(); $document = $parser->parse('@extends("layout")');
Template
文档实例包含已解析Blade模板的信息。要处理文档,必须实现Stillat\BladeParser\Visitors\AbstractNodeVisitor
接口
use Stillat\BladeParser\Nodes\Node; use Stillat\BladeParser\Visitors\AbstractNodeVisitor; class MyVisitor extends AbstractNodeVisitor { public function onEnter(Node $node) { echo $node->innerContent; } }
一旦创建了自己的访问者,必须向文档请求一个TemplateTraverser
实例,添加新访问者,然后调用traverse()
方法
$traverser = $document->getTraverser(); $traverser->addVisitor(new MyVisitor()); $traverser->traverse();
所有添加的遍历器的onEnter
方法将用文档的节点调用。
内置的Stillat\BladeParser\Visitors\PrinterNodeVisitor
和Stillat\BladeParser\Printers\Php\Printer
展示了遍历器机制的进阶用法。
组件详细信息解析器
提供的PHP编译器(打印器)需要一个Stillat\BladeParser\Contracts\ComponentDetailsResovlerContract
实例。此接口负责提供关于组件的类名、属性、数据和属性的信息。此解析器将根据环境特定,你可以使用位于tests/AppComponentNameFinder.php
的模拟测试解析器作为示例。
使用默认PHP编译器
要从先前解析的节点集合编译Blade文档,首先需要创建一个Stillat\BladeParser\Contracts\ComponentDetailsResovlerContract
实例。一旦实现了此接口,可以设置编译器如下
use Stillat\BladeParser\Compilers\PhpCompiler; $compiler = new PhpCompiler($yourComponentDetailsResolverInstance); $compiledString = $compiler->compileString('@extends("some_file")');
已知问题
目前,Node
实例中提供的所有详细信息并不完全准确。欢迎提交拉取请求!
许可
此解析器库是开源软件,受MIT许可证许可。