繁体   English   中英

与使用原始php相比,使用Laravel的内置控制结构是否有优势?

[英]Is there an advantage to using Laravel's built-in control structures vs using raw php?

Laravel中的刀片视图使用@符号提供了许多控制结构 (如果,循环,开关),它们看起来似乎很好用,但是我想知道使用它们比同等的原始php命令是否有任何优势。

例如,在Laravel中,if语句如下所示:

@if(statement)
    some html
@endif 

和等效的原始php看起来像:

<? if(statement) {?>
    some html
<? } ?>

我正在从Zend Framework v1后端将应用程序升级到Laravel,并且已经切换到使用laravel的控制结构,但是我想知道是否除了坚持laravel的标准之外是否还有其他优势?

正如文档所说:

Blade还为常见的PHP控件结构(例如条件语句和循环)提供了方便的快捷方式。 这些快捷方式提供了一种非常干净,简洁的方法来使用PHP控件结构,同时也使它们的PHP同行保持熟悉。

如您所见,主要目的是创建阅读时更“干净”的快捷方式。 更好的API。


更新

正如@ceejayoz所提到的,它也可以扩展 Blade让您创建自己的指令以在视图中使用。 该指令也可以接收参数。

延伸叶片

Blade允许您使用directive方法定义自己的自定义指令。 当Blade编译器遇到自定义指令时,它将使用该指令包含的表达式调用提供的callback

下面的示例创建一个@datetime($var)指令,该指令格式化给定的$var ,该$var应该是DateTime一个实例:

 <?php namespace App\\Providers; use Illuminate\\Support\\Facades\\Blade; use Illuminate\\Support\\ServiceProvider; class AppServiceProvider extends ServiceProvider { /** * Perform post-registration booting of services. * * @return void */ public function boot() { Blade::directive('datetime', function ($expression) { return "<?php echo ($expression)->format('m/d/YH:i'); ?>"; }); } /** * Register bindings in the container. * * @return void */ public function register() { // } } 

如您所见,我们将把format方法链接到传递给指令的任何表达式上。 因此,在此示例中,此指令生成的最终PHP将是:

 <?php echo ($var)->format('m/d/YH:i'); ?> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM