【发布时间】:2015-04-25 06:13:29
【问题描述】:
假设我将一个可以包含两个不同类的实例的数组传递给包含表格标记的 View 模板。每个项目都将显示为表格行,因此我需要检查它的类名以包含适当的行部分。 到目前为止,我只能看到两种方法来实现这一目标:
- 使用
get_class函数比较类名 - 在两个类中添加
isFoo()方法,如果对象的类是Foo,则返回true
我不喜欢第二个选项,因为在我有两个以上的类的情况下更难维护,但我想知道第一个选项是否常用,get_class 函数是否适合放置在视图模板中。
laravel 的刀片模板中的示例:
/* catalog.cycle_rows.blade.php */
@foreach($cycles as $cycle)
@include('catalog.cycle_row')
@if( $cycle->subcycles )
@include('catalog.cycle_rows', ['cycles' => $cycle->subcycles])
@else
@foreach($cycle->cycleItems as $cycleItem)
@if($cycleItem->isBlock()) // here's the check
@include('catalog.block_row', ['cycle' => $cycleItem])
@else
@include('catalog.cycle_item_row')
@endif
@endforeach
@endif
@endforeach
【问题讨论】:
-
我不确定检查类名是否是解决此问题的最佳方法。我真的不知道您的应用程序是如何工作的,但我可能会使用像您的选项 2 这样的实例变量或方法。