为了账号安全,请及时绑定邮箱和手机立即绑定

我可以将自定义类转换为刀片 Laravel 中的变量吗

我可以将自定义类转换为刀片 Laravel 中的变量吗

PHP
千万里不及你 2022-07-16 18:40:33
我可以在 Laravel Blade 中做类似的事情吗:@foreach($collection as (CustomClass) $object)
查看完整描述

3 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

这是不可能的。由于 Blade 是一种 PHP 模板语言,你只能做 PHP 允许的事情……而且它不允许你在局部变量上强制转换类型。


您只能键入提示函数参数和 - 在新发布的 PHP 7.4 中 - 类属性。你也可以给你的函数一个返回类型。


PHP 7+:


public function foo(string $bar): int

{

    return strlen($bar);

}

PHP 7.4+:


   protected int $count;

当然,我的示例是使用标量类型(字符串、整数、浮点数、布尔值)制作的,但您完全可以在此处放置自定义类。


public function logout(App\User $user)

{

    //stuff

}


查看完整回答
反对 回复 2022-07-16
?
青春有我

TA贡献1784条经验 获得超8个赞

您在问题中提供的信息很少,但是由于您使用的是@foreach,因此您可以按以下方式进行类型转换,这应该可以工作:


@foreach($collection as $object)

@php($object = (object)$object)

......

@endforeach

这应该允许您使用$object->item


查看完整回答
反对 回复 2022-07-16
?
月关宝盒

TA贡献1772条经验 获得超5个赞

您可以使用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();

}


查看完整回答
反对 回复 2022-07-16
  • 3 回答
  • 0 关注
  • 97 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信