tacman/blade-parser

此软件包最新版本(dev-master)没有可用的许可信息。

dev-master 2022-11-19 01:29 UTC

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\PrinterNodeVisitorStillat\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许可证许可。