如何在PHP中将静态代码重构为动态代码,以检查某些属性值?[关闭]

5cg8jx4n  于 2023-04-10  发布在  PHP
关注(0)|答案(1)|浏览(133)

已关闭,该问题需要details or clarity,目前不接受回答。
**想要改进此问题?**通过editing this post添加详细信息并澄清问题。

昨天关门了。
Improve this question
我有代码在laravel php喜欢这个.我用这个代码来检查子topik_id在每个父.我认为我的代码是非常脏,所以我想重构它,使其动态.这里我的代码

public function checkParent()
{
    $dt = $this->getSubTopiks()["subTopiks"];
    $arrId = [];

    if ($this->sub_topik_id) {
        array_push($arrId, $this->sub_topik_id);
        $aa = $dt->where('id', $this->sub_topik_id)->first();
        if ($aa->sub_topik_id) {
            array_push($arrId, $aa->sub_topik_id);
            $bb = $dt->where('id', $aa->sub_topik_id)->first();
            if ($bb->sub_topik_id) {
                array_push($arrId, $bb->sub_topik_id);
                $cc = $dt->where('id', $bb->sub_topik_id)->first();
                if ($cc->sub_topik_id) {
                    array_push($arrId, $cc->sub_topik_id);
                    $dd = $dt->where('id', $cc->sub_topik_id)->first();
                    if ($dd->sub_topik_id) {
                        array_push($arrId, $dd->sub_topik_id);
                    }
                }
            }
        }
    }

    return $arrId;
}

如何将此代码转换为动态代码?

gcuhipw9

gcuhipw91#

您可以使用loop来使其更具动态性。下面是如何覆盖checkParent函数的示例:

public function checkParent()
{
     $dt = $this->getSubTopiks()["subTopiks"];
     $arrId = [];
     $parent = $this;

     while ($parent->sub_topic_id) {
         array_push($arrId, $parent->sub_topic_id);
         $parent = $dt->where('id', $parent->sub_topik_id)->first();
     }

     return $arrId;
}

在这个方法中,我使用了while loop来不断检查父对象,直到我们得到一个没有sub_topik_idparent。我们从当前对象作为parent开始,然后通过使用前一个父对象的sub_topik_id查询$dt集合来更新循环中的parent变量。
我希望它是有用的。

相关问题