Могу ли я привести пользовательский класс к переменной в blade Laravel - PullRequest
0 голосов
/ 09 января 2020

Могу ли я сделать что-то подобное в Laravel Blade:

@foreach($collection as (CustomClass) $object)

Ответы [ 2 ]

1 голос
/ 09 января 2020

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

Вы можете вводить только параметры функции подсказки и - в недавно выпущенных PHP 7.4 - свойствах класса. Вы также можете дать вашей функции тип возврата.

PHP 7 +:

public function foo(string $bar): int
{
    return strlen($bar);
}

PHP 7.4+:

   protected int $count;

Конечно, мой примеры сделаны со скалярными типами (string, int, float, boolean), но вы можете полностью разместить здесь собственный класс.

public function logout(App\User $user)
{
    //stuff
}
0 голосов
/ 09 января 2020

Вы можете использовать Collection::whereInstanceOf(), чтобы отфильтровать все, что не относится к вашему классу. https://laravel.com/docs/5.8/collections#method -whereinstanceof

@foreach($collection->whereInstanceOf(CustomClass) as $object)

Если вы хотите просто сделать ошибку, если что-то не принадлежит вашему классу, вы можете сравнить размеры коллекций. Но я предлагаю сделать это в контроллере:

if ($collection->whereInstanceOf(CustomClass)->count() !== $collection->count()) {
    throw Exception();
}
...