наследование — PHP расширяет класс и использует другой класс с той же базой

Я довольно новичок в PHP и мне интересно, возникнут ли какие-либо проблемы, если установить переменную класса в качестве нового экземпляра другого класса, который, в свою очередь, расширяет тот же базовый класс, что и первый класс. По сути, если у меня есть два класса, A и B, оба расширяют базовый класс. Могу ли я иметь класс C, который расширяет A и создает новый экземпляр 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, и будет ли он работать для вызова log() Функция Base двумя разными способами?

-1

Решение

Я настоятельно рекомендую не продолжать с моделью, которую вы придумали.

Это отличная статья, которая помогает понять принципы разработки программного обеспечения SOLID, и, похоже, ваше приложение отклоняется от https://scotch.io/bar-talk/s-o-l-i-d-the-first-five-principles-of-object-oriented-design

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

0

Другие решения

Других решений пока нет …