【问题标题】:What is the point of writing @php @endphp instead of <?php ?> in Laravel Blade?在 Laravel Blade 中写 @php @endphp 而不是 <?php ?> 有什么意义?
【发布时间】:2018-02-24 07:00:35
【问题描述】:

您可以在 Laravel 中编写如下 PHP 代码。

@php
    //
@endphp

你也可以写,

<?php
//
?>

关于这两种方法有什么区别?有什么优势?

例如,当我们用来显示某些东西时,我们可以使用{{ $name}}。它可以节省开发人员时间,因为如果我们使用 PHP,我们必须编写 &lt;?php echo $name; ?&gt;

但是写@php @endphp而不是&lt;?php ?&gt;有什么意义

【问题讨论】:

  • 我认为使用@php @endphp 代替&lt;?php ?&gt; 没有任何额外的好处。这只是为了保持刀片语法的一致性
  • 有些人只是更喜欢使用@php 版本,因此它与刀片指令的其余部分相同。
  • 我认为使用刀片模板语法与 php 语法并没有太大区别,因为我知道自动转义是其中的区别。在刀片模板中,它会自动转义字符串。
  • 编写=$name?>可以节省更多开发人员的时间,但你不会这样做...如果你编写一个blade.php文件,你就使用blade。
  • @Amarnasan 那是完全不同的故事。如果您有良好的 PHP 知识,您应该知道如果服务器中未启用 PHP 短标签,则不能使用 =$name?>。所以,写 ?=$name?> 有一个明显的缺点。

标签: php laravel laravel-5 laravel-blade


【解决方案1】:

总而言之,绝对没有区别。

它只是一个指令,使刀片视图与其他预定义指令保持一致,例如 @while @if @foreach 等。

您可以在

下找到定义

Illuminate/view/Compilers/Concerns/CompilesRawPhp.php

只是它需要表达式之间 &lt;?php ?标签

protected function compilePhp($expression)
    {
        if ($expression) {
            return "<?php {$expression}; ?>";
        }
        return '@php';
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-31
    • 2011-01-02
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 2011-05-04
    相关资源
    最近更新 更多