在 Laravel Blade 中写 @php @endphp 而不是 <?php ?> 有什么意义?

What is the point of writing @php @endphp instead of <?php ?> in Laravel Blade?

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

@php
    //
@endphp

或者你可以写,

<?php
//
?>

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

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

但是写@php @endphp而不是<?php ?>

有什么意义

长短绝对没有区别。

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

您可以在

下找到定义

Illuminate/view/Compilers/Concerns/CompilesRawPhp.php

简单地说,它需要之间的表达 <?php ? 个标签

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