它是如何完成的 - Laravel Blade 语句
How it's done - Laravel Blade statements
它是如何完成的,例如我们可以在 blade 视图中有这样的东西:
@if (count($records) === 1)
(...)
分析bladeCompiler.php文件后,可以看出这是转换为PHP,例如有这样一种方法:
protected function compileIf($expression)
{
return "<?php if{$expression}: ?>";
}
然后由 "compileString" 方法间接使用,该方法接受 returns 一个字符串。
但是然后呢?我在整个项目中找不到PHP的"eval"函数调用,这是怎么做到的?
Blade 编译完 PHP 代码后,Laravel 将结果放入 storage/framework/views/
目录中的缓存文件中。然后直接调用该文件,因此您不需要任何 eval()
语句。
它是如何完成的,例如我们可以在 blade 视图中有这样的东西:
@if (count($records) === 1)
(...)
分析bladeCompiler.php文件后,可以看出这是转换为PHP,例如有这样一种方法:
protected function compileIf($expression)
{
return "<?php if{$expression}: ?>";
}
然后由 "compileString" 方法间接使用,该方法接受 returns 一个字符串。
但是然后呢?我在整个项目中找不到PHP的"eval"函数调用,这是怎么做到的?
Blade 编译完 PHP 代码后,Laravel 将结果放入 storage/framework/views/
目录中的缓存文件中。然后直接调用该文件,因此您不需要任何 eval()
语句。