PHP 扩展一个 Class 并使用具有相同基础的另一个 Class
PHP Extending A Class And Using Another Class With The Same Base
我是 PHP 的新手,想知道将 class 变量设置为另一个 class 的新实例是否会引起任何问题,而后者又扩展了与第一个 class 相同的基数 class。基本上,如果我有两个 classes,A 和 B,它们都扩展了一个 Base class。我可以有一个 class, 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();
在同一个 class C 中初始化 Base class 两次(根据我的理解)会不会有任何冲突,调用 log()
是否真的有效? Base的两种不同方式的功能?
我强烈建议不要继续使用您想到的模式。
这是一篇很棒的文章,有助于理解 SOLID 软件设计原则,听起来您的应用程序偏离了 https://scotch.io/bar-talk/s-o-l-i-d-the-first-five-principles-of-object-oriented-design
我知道这决不能回答你的问题;但这是一个错误的问题,鼓励您继续以这种方式设计软件也无济于事。
我是 PHP 的新手,想知道将 class 变量设置为另一个 class 的新实例是否会引起任何问题,而后者又扩展了与第一个 class 相同的基数 class。基本上,如果我有两个 classes,A 和 B,它们都扩展了一个 Base class。我可以有一个 class, 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();
在同一个 class C 中初始化 Base class 两次(根据我的理解)会不会有任何冲突,调用 log()
是否真的有效? Base的两种不同方式的功能?
我强烈建议不要继续使用您想到的模式。
这是一篇很棒的文章,有助于理解 SOLID 软件设计原则,听起来您的应用程序偏离了 https://scotch.io/bar-talk/s-o-l-i-d-the-first-five-principles-of-object-oriented-design
我知道这决不能回答你的问题;但这是一个错误的问题,鼓励您继续以这种方式设计软件也无济于事。