如果条件在Laravel中的Blade模板中表现出色

时间:2015-03-02 12:41:30

标签: php performance templates laravel blade

我只是在 Laravel 框架内使用刀片模板进行表演的简单问题。我们来谈谈大型项目。

我有兴趣知道在这样的if条件下执行if性能是否更高效:

@if(isset($training))
  <a class="btn" href="{{MYLIB\URL::training_url($sector, $category, $training)}}">Nu inschrijven<span class="icon-right"></span></a>
@endif

还是喜欢这个?

<?php if (isset($page)){ ?>
  <h2>{{{ $page->title }}}</h2>
<?php } ?>

提前致谢

3 个答案:

答案 0 :(得分:2)

刀片语法编译为原始PHP。这意味着:

@if(isset($page))
    <h2>{{{ $page->title }}}</h2>
@endif

成为这个:

<?php if(isset($page)): ?>
    <h2><?php echo e($page->title); ?></h2>
<?php endif; ?>

然后将此编译模板存储在storage/framework/views(Laravel 4中的app/storage/views

结论

你获得的唯一表现就是编译。理想情况下,只有在视图文件更改或第一次访问时才会发生这种情况。如果你问我,你肯定还有其他性能瓶颈需要先担心。 (特别是像数据库查询或只是糟糕的架构)

答案 1 :(得分:0)

Laravel只是将刀片语法转换为第一遍中临时视图文件中的普通php语法,这些文件存储在/app/storage中。

因此blade和常规php命令之间基本没有性能差异

答案 2 :(得分:0)

无论如何,laravel编译和缓存模板时,唯一的轻微开销是在第一次访问刀片模板时,之后在性能上没有差别