Php 在其他子类(同一父类)中使用parents-child方法

Php 在其他子类(同一父类)中使用parents-child方法,php,class,oop,Php,Class,Oop,我对OOP有一些问题。我刚在php中开始OOP,我遇到了一些问题。 我有个问题想问你,也许你能帮我 我有多个类(在本例中为3) 问题:ShowResults()应同时使用子方法和ShowResults()中使用的子方法有时使用其他子类中的方法 也许这是不可能的,但如果你能帮助我,我将不胜感激。(即使无法确认) 谢谢。我想你还没有完全理解OOP中“家长”和“孩子”的含义,以及它们为什么有用。继承的目的不是授予对另一个类中一个类的方法的访问权,也不是自动运行同一事物的多个实现。相反,其目的是允许类外

我对OOP有一些问题。我刚在php中开始OOP,我遇到了一些问题。 我有个问题想问你,也许你能帮我

我有多个类(在本例中为3)

问题:ShowResults()应同时使用子方法和ShowResults()中使用的子方法有时使用其他子类中的方法

也许这是不可能的,但如果你能帮助我,我将不胜感激。(即使无法确认)


谢谢。

我想你还没有完全理解OOP中“家长”和“孩子”的含义,以及它们为什么有用。继承的目的不是授予对另一个类中一个类的方法的访问权,也不是自动运行同一事物的多个实现。相反,其目的是允许类外的代码调用其中一个实现,而无需知道是哪一个实现

因此,如果我有一个类
NB
的实例,我知道我可以在它上面调用
LoginNB
。如果我传递的实际上是类
FN
的实例,那么它仍然可以工作;类
FN
将继承该方法,或以不同的方式重新实现它,但使用相同的外部签名


然而,class
NB
不知道类从它继承了什么,就像一个函数知道调用它的其他地方一样;这种关系只有一条路

为什么不更好地组织代码?在多个子类中使用的方法应该在父类中定义。@hassan我完全同意你的观点,但我想在父类中使用child的方法听起来像是你想让父类继承他的子类,如果你想这样做,您需要使用子对象的实例,而不是父对象。
        <?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();