PHP扩展类并使用具有相同基础的另一个类

时间:2017-03-26 05:16:19

标签: php inheritance class-hierarchy

我对PHP很新,我想知道是否会因为将类变量设置为另一个类的新实例而导致任何问题,而另一个类又将第一个类扩展到相同的基类。基本上,如果我有两个类,A和B,它们都扩展了一个Base类。我可以使用扩展A的类C来创建B的新实例吗?我想做这样的事情:

// In its own file (BaseClass.php)
    class Base {
        public function log($message) {
            // Write $message to the log
        }
    }

// In its own file (ClassA.php)
    require_once("path/to/BaseClass.php");
    class A extends Base {
        public function test() {
            // Do some test
        }
    }

// In its own file (ClassB.php)
    require_once("path/to/BaseClass.php");
    class B extends Base {
        public function getData() {
            // Get data here
        }
    }

// In its own file (ClassC.php)
    require_once("path/to/ClassA.php");
    require_once("path/to/ClassB.php");
    class C extends A {
        protected $classB;

        public function run() {
            // Initialize an instance of class B
            $this->classB = new B;

            // Can call log() function of Base class because
            // class C extends class A which extends Base
            $this->log("Log Message");

            // Can also call log() function of Base class through
            // class B because class B extends Base
            $this->classB->log("Another Log Message");
        }
    }
    $classC = new C;
    $classC->run();

在同一个C类中两次初始化Base类是否存在任何冲突(从我理解的方面),它实际上是否会以两种不同的方式调用Base的log()函数?

1 个答案:

答案 0 :(得分:0)

我强烈建议您不要继续使用您已经考虑过的模式。

这是一篇很棒的文章,有助于理解SOLID软件设计原则,听起来你的应用程序偏离了https://scotch.io/bar-talk/s-o-l-i-d-the-first-five-principles-of-object-oriented-design

我知道这绝不会回答你的问题;但这是一个错误的问题,鼓励你以这种方式继续设计软件并不会有所帮助。