用PHP输出面包屑的最佳实践


Best practice for outputting breadcrumbs in PHP

作为我们正在开发的电子商务解决方案的一部分,CMS可以选择产品类别有无限数量的子类别,每个子类别可以有无限数量。基本上,产品类别有一个无限的嵌套级别。

类别的数据库表模式如下所示:

+-------------+-----------------+----------------+
| category_id |      name       |   parent_id    |
+-------------+-----------------+----------------+
|     1       |    Parent 1     |      null      |
|     2       | Child of Parent |        1       |
+-------------+-----------------+----------------+

我们想为类别导航的每个级别添加一个breadcrumbs导航,所以我的问题是,在指定了父级的情况下,在类别中循环,直到达到最高级别的最佳做法是什么?

显然,我们可以在固定循环中对其进行编码(例如if($child->hasParent()) { echo '1'; if($child->children->hasParent() { } }

如何在未知数量的类别中迭代,直到到达顶级类别(即未分配parent_id的类别)?

只需使用while循环即可。

while($child->hasParent()) {
     echo $child->name();
     $child = $child->Parent();
}

If(parent class==null)

那么子类==空

其他hasparent类(null)==0

重复