PHP код ревью участки повторяются

227
29 декабря 2021, 18:20

у меня есть такой вот рабочий код, ну кажется я сделал что-то не так, подскажите пожалуйста как можно улучшить качество кода:

foreach($html->find('.comment-list li.depth-1') as $depth_1)
    {
        $depth_1_id = getPostCommentId($depth_1->id);
        $depth_1_comment = [
            'id' => $depth_1_id,
            'author' => $depth_1->find('.fn', 0)->plaintext,
            'avatar' => [
                'src' => toHttps($depth_1->find('img', 0)->src),
                'srcset' => toHttps($depth_1->find('img', 0)->srcset)
            ],
            'created_at' => getCommentDateTime($depth_1->find('time', 0)->datetime),
            'text' => beautyHTML($depth_1->find('.comment-content', 0)->innertext),
            'parent_id' => null
        ];
        $comments[] = $depth_1_comment;
        //
        foreach($depth_1->find('.children li.depth-2') as $depth_2)
        {
            $depth_2_id = getPostCommentId($depth_2->id);
            $depth_2_comment = [
                'id' => $depth_2_id,
                'author' => $depth_2->find('.fn', 0)->plaintext,
                'avatar' => [
                    'src' => toHttps($depth_2->find('img', 0)->src),
                    'srcset' => toHttps($depth_2->find('img', 0)->srcset)
                ],
                'created_at' => getCommentDateTime($depth_2->find('time', 0)->datetime),
                'text' => beautyHTML($depth_2->find('.comment-content', 0)->innertext),
                'parent_id' => $depth_1_id
            ];
            $comments[] = $depth_2_comment;
            //
            foreach($depth_2->find('.children li.depth-3') as $depth_3)
            {
                $depth_3_id = getPostCommentId($depth_3->id);
                $depth_3_comment = [
                    'id' => $depth_3_id,
                    'author' => $depth_3->find('.fn', 0)->plaintext,
                    'avatar' => [
                        'src' => toHttps($depth_3->find('img', 0)->src),
                        'srcset' => toHttps($depth_3->find('img', 0)->srcset)
                    ],
                    'created_at' => getCommentDateTime($depth_3->find('time', 0)->datetime),
                    'text' => beautyHTML($depth_3->find('.comment-content', 0)->innertext),
                    'parent_id' => $depth_2_id
                ];
                $comments[] = $depth_3_comment;
                //
                foreach($depth_3->find('.children li.depth-4') as $depth_4)
                {
                    $depth_4_id = getPostCommentId($depth_4->id);
                    $depth_4_comment = [
                        'id' => $depth_4_id,
                        'author' => $depth_4->find('.fn', 0)->plaintext,
                        'avatar' => [
                            'src' => toHttps($depth_4->find('img', 0)->src),
                            'srcset' => toHttps($depth_4->find('img', 0)->srcset)
                        ],
                        'created_at' => getCommentDateTime($depth_4->find('time', 0)->datetime),
                        'text' => beautyHTML($depth_4->find('.comment-content', 0)->innertext),
                        'parent_id' => $depth_3_id
                    ];
                    $comments[] = $depth_4_comment;
                    //
                    foreach($depth_4->find('.children li.depth-5') as $depth_5)
                    {
                        $depth_5_id = getPostCommentId($depth_5->id);
                        $depth_5_comment = [
                            'id' => $depth_5_id,
                            'author' => $depth_5->find('.fn', 0)->plaintext,
                            'avatar' => [
                                'src' => toHttps($depth_5->find('img', 0)->src),
                                'srcset' => toHttps($depth_5->find('img', 0)->srcset)
                            ],
                            'created_at' => getCommentDateTime($depth_5->find('time', 0)->datetime),
                            'text' => beautyHTML($depth_5->find('.comment-content', 0)->innertext),
                            'parent_id' => $depth_4_id
                        ];
                        $comments[] = $depth_5_comment;
                        //
                        foreach($depth_5->find('.children li.depth-6') as $depth_6)
                        {
                            $depth_6_id = getPostCommentId($depth_6->id);
                            $depth_6_comment = [
                                'id' => $depth_6_id,
                                'author' => $depth_6->find('.fn', 0)->plaintext,
                                'avatar' => [
                                    'src' => toHttps($depth_6->find('img', 0)->src),
                                    'srcset' => toHttps($depth_6->find('img', 0)->srcset)
                                ],
                                'created_at' => getCommentDateTime($depth_6->find('time', 0)->datetime),
                                'text' => beautyHTML($depth_6->find('.comment-content', 0)->innertext),
                                'parent_id' => $depth_5_id
                            ];
                            $comments[] = $depth_6_comment;
                            //
                            foreach($depth_6->find('.children li.depth-7') as $depth_7)
                            {
                                $depth_7_id = getPostCommentId($depth_7->id);
                                $depth_7_comment = [
                                    'id' => $depth_7_id,
                                    'author' => $depth_7->find('.fn', 0)->plaintext,
                                    'avatar' => [
                                        'src' => toHttps($depth_7->find('img', 0)->src),
                                        'srcset' => toHttps($depth_7->find('img', 0)->srcset)
                                    ],
                                    'created_at' => getCommentDateTime($depth_7->find('time', 0)->datetime),
                                    'text' => beautyHTML($depth_7->find('.comment-content', 0)->innertext),
                                    'parent_id' => $depth_6_id
                                ];
                                $comments[] = $depth_7_comment;
                                //
                                foreach($depth_7->find('.children li.depth-8') as $depth_8)
                                {
                                    $depth_8_id = getPostCommentId($depth_8->id);
                                    $depth_8_comment = [
                                        'id' => $depth_8_id,
                                        'author' => $depth_8->find('.fn', 0)->plaintext,
                                        'avatar' => [
                                            'src' => toHttps($depth_8->find('img', 0)->src),
                                            'srcset' => toHttps($depth_8->find('img', 0)->srcset)
                                        ],
                                        'created_at' => getCommentDateTime($depth_8->find('time', 0)->datetime),
                                        'text' => beautyHTML($depth_8->find('.comment-content', 0)->innertext),
                                        'parent_id' => $depth_7_id
                                    ];
                                    $comments[] = $depth_8_comment;
                                    //
                                    foreach($depth_8->find('.children li.depth-9') as $depth_9)
                                    {
                                        $depth_9_id = getPostCommentId($depth_9->id);
                                        $depth_9_comment = [
                                            'id' => $depth_9_id,
                                            'author' => $depth_9->find('.fn', 0)->plaintext,
                                            'avatar' => [
                                                'src' => toHttps($depth_9->find('img', 0)->src),
                                                'srcset' => toHttps($depth_9->find('img', 0)->srcset)
                                            ],
                                            'created_at' => getCommentDateTime($depth_9->find('time', 0)->datetime),
                                            'text' => beautyHTML($depth_9->find('.comment-content', 0)->innertext),
                                            'parent_id' => $depth_8_id
                                        ];
                                        $comments[] = $depth_9_comment;
                                        //
                                        foreach($depth_9->find('.children li.depth-10') as $depth_10)
                                        {
                                            $depth_10_id = getPostCommentId($depth_10->id);
                                            $depth_10_comment = [
                                                'id' => $depth_10_id,
                                                'author' => $depth_10->find('.fn', 0)->plaintext,
                                                'avatar' => [
                                                    'src' => toHttps($depth_10->find('img', 0)->src),
                                                    'srcset' => toHttps($depth_10->find('img', 0)->srcset)
                                                ],
                                                'created_at' => getCommentDateTime($depth_10->find('time', 0)->datetime),
                                                'text' => beautyHTML($depth_10->find('.comment-content', 0)->innertext),
                                                'parent_id' => $depth_9_id
                                            ];
                                            $comments[] = $depth_10_comment;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
READ ALSO
Как упростить добавление новых правил для Valitron или помощь с ООП от знающих?

Как упростить добавление новых правил для Valitron или помощь с ООП от знающих?

Есть такой симпатичный валидатор - Valitron, добавление новых правил в нем реализуется вот как:

88
Посчитать содержимое массива

Посчитать содержимое массива

Помогите, не могу решить следующую задачу на выборку из вложенных массивов

88
MYSQL LEFT JOIN on each value JSON

MYSQL LEFT JOIN on each value JSON

Прошу помощи (mysql 57) В связи с большим количеством данных в таблице было принято решение хранить связи ячеек не в отдельной таблице как обычно...

93
Игра "Виселица" не работает коректно

Игра "Виселица" не работает коректно

Игра работает, но игрок выигрывает если он угадывает всего лишь одну любую букву, что не правильно, потому как игрок должен отгадатать все...

104