Используйте метод parent child в другом дочернем классе (тот же родитель) - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть некоторые проблемы с ООП.Я только начал ООП в php, и у меня есть некоторые проблемы.Итак, у меня есть к вам вопрос, может быть, вы мне поможете.

У меня есть несколько классов (в данном случае 3)

        <?php
            //FILE class.NB.php
            class NB { //databse manipulations, curls
                public $db;
                function __construct($db) {
                    $this->db = $db;
                }

                public function LoginNB () {
                    //something here
                    $this->db->query("UPDATE logins SET login_time = %u", time());
                }
            }

            //FILE class.fn.php
            class FN extends NB {
                public function deposits () {
                    $this->LoginNB();
                    return $this->db->query("SELECT * FROM deposits");
                }


                public function getUserWihdrawsCompared() {
                    // AND HERE I WOULD LIKE TO USE the DR's ::usersWithdraws
                    $users = $this->usersWithdraws();
                }
            }


            //FILE class.dr.php
            class DR extends NB {
                public function withdraws () {
                    $this->LoginNB();
                    return $this->db->query("SELECT * FROM withdraws");
                }

                public function usersWithdraws() {
                    $a = $this->db->query("SELECT * FROM user_withdraws");
                    /*code here*/
                    return $final_array;
                }

                public function compare_withdraws_deposits () {
                    // AND HERE I WOULD LIKE TO USE the FN's ::deposits
                    $deposit_list = $this->deposits();

                    /* code here */

                    return $final_array;
                }
            }

        ?>

Итак, мой вопрос, как можно использоватьвсе везде.Я видел что-то с чертами, но я не уверен, как использовать и что именно использовать.Мои проблемы в том, что я хочу использовать дочерний метод родителя для другого потомка с тем же родителем.Но в конце я хотел бы использовать только родительский класс для «запуска» реализации в других классах, если это возможно.Например:

    $NB = new NB($db);
    $result = $NB->ShowResults();

Проблема: ShowResults () должен использовать как дочерние, так и дочерние методы, используемые в ShowResults (), иногда использовать методы из другого дочернего класса.

Может быть, это невозможно, но я быпризнателен, если вы могли бы помочь мне.(даже с подтверждением, которое невозможно)

Спасибо.

1 Ответ

0 голосов
/ 18 декабря 2018

Я думаю, что вы не полностью поняли, что мы подразумеваем под «родителем» и «ребенком» в ООП, и почему они полезны.Целью наследования не является предоставление доступа к методам одного класса в другом или автоматический запуск нескольких реализаций одной и той же вещи.Вместо этого цель состоит в том, чтобы позволить коду вне классов вызывать одну реализаций без необходимости знать какая .

Итак,если у меня есть экземпляр класса NB, я знаю, что могу вызвать LoginNB на нем.Если то, что я передал, на самом деле является экземпляром класса FN, , который все равно будет работать ;класс FN будет либо наследовать этот метод, либо переопределять его другим способом, но с той же внешней сигнатурой.

Однако класс NB ничего не знает о том, какие классы наследуют от него, большечем функция знает, откуда еще она вызывается;отношения идут только в одну сторону.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...