Есть ли преимущество использования встроенных структур управления Laravel по сравнению с использованием необработанного php? - PullRequest
0 голосов
/ 07 января 2019

Блейд-представления в Laravel предоставляют множество управляющих структур (if, loop, switch), использующих символ @, которые, кажется, работают хорошо, но мне интересно, есть ли преимущество в использовании этих по сравнению с их эквивалентными необработанными команды php.

Например, в Laravel оператор if будет выглядеть так:

@if(statement)
    some html
@endif 

и эквивалентный сырой php будет выглядеть так:

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

Я обновляю приложение до Laravel из бэкэнда Zend Framework v1 и переключаюсь на использование структур управления laravel, но мне интересно, есть ли какое-то преимущество, кроме соблюдения стандартов laravel?

1 Ответ

0 голосов
/ 07 января 2019

Как сказано в документах :

Blade также предоставляет удобные ярлыки для общих структур управления PHP, таких как условные операторы и циклы. Эти ярлыки обеспечивают очень чистый и лаконичный способ работы со структурами управления PHP, оставаясь при этом знакомыми своим аналогам PHP.

Как видите, основная цель - создать ярлыки, которые будут «чище» при чтении. Лучший API.


Обновление

Как уже упоминалось @ceejayoz, он также расширяемый . Blade позволяет вам создавать свои собственные директивы, которые будут использоваться в ваших представлениях. Эти директивы также могут получать параметры.

Удлиняющий клинок

Blade позволяет вам определять свои собственные директивы, используя directive метод. Когда компилятор Blade встречает пользовательский директива, она будет вызывать предоставленное callback с выражением что директива содержит.

В следующем примере создается директива @datetime($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/Y H:i'); ?>";
        });
    }

    /**
     * Register bindings in the container.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

Как видите, мы будем связывать метод форматирования с любым выражение передается в директиву. Итак, в этом примере Конечный PHP, сгенерированный этой директивой, будет:

<?php echo ($var)->format('m/d/Y H:i'); ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...