[英]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.