首先,我们通过几个要点来解释 Blade 引擎的工作原理。
- 您选择一个 Blade 模板进行渲染。
- 引擎使用一系列正则表达式来解析和编译模板。
- 该引擎生成一个普通的 PHP 文件并将其写入磁盘(以便将其缓存以供将来渲染)。
- 包含 PHP 文件并使用输出缓冲区来捕获生成的 HTML。
该过程中最有趣的步骤是使用 RegEx 模式从模板中提取各种内容并生成适当的 PHP 代码。其他模板引擎使用更传统的标记器和解析器来处理模板,但由于 Blade 或多或少只是常规 PHP 代码的语法糖,因此它可以以更简单的方式完成工作。
这意味着您基本上总是在处理可能包含普通 PHP 代码的任意字符串。
#自定义指令
您可以编写自己的 Blade 指令。这样您就可以在指令中隐藏大量样板代码并简化 Blade 模板。
Blade::directive('example', function (string $expression) {// Logic goes here.
});
让很多新的 Laravel 开发人员感到困惑的是,自定义指令仅接收回调函数的一个参数。
假设@example()
此处的指令设计为接受 2 个参数:
@example('Hello, ', 'Ryan')
经验较少的 Laravel 开发人员可能希望回调函数接收两个参数,对应于我们传递给实际指令的两个参数。
但事实并非如此。相反,我们从 Blade 模板收到一个包含文字的字符串。
Blade::directive('example', function (string $expression) {assert($expression === "'Hello, ', 'Ryan'");
});