我正在构建一个供个人使用的PHP OOP MVC框架。
我想知道是否有以下方法或正确的实现:
能够将方法从一个"子类"(未扩展)调用到另一个"子类"。我的意思是。。。我有一个为每个子类创建新对象的类,而不是使用继承。我们称它为 MainClass,它有 3 个像这样的"子类"
class MainClass {
public $db;
public $forms;
public $pagination;
function __construct() {
$this->db = new class_db();
$this->forms = new class_forms();
$this->utils = new class_utils();
}
}
以及初始化
$MainClass = new MainClass();
例如,我可以做
$MainClass->utils->show_text("Hello World");
并且工作正常。
我想做的是...在$MainClass->utils->test()(另一种测试方法)中,能够在不使用全局或$GLOBALS的情况下访问$MainClass->db。
有没有其他方法可以实现这一目标?为了能够访问另一个子方法中的$MainClass方法和子方法(从实用程序和初始化 MainClass 的主页访问 db)?会怎么样?我希望能够访问所有子方法,例如能够访问数据库和表单方法的实用程序。以及主类之外的页面。
谢谢
如果utils
必须使用db
,要么必须将 MainClass 实例传递给 utils,以便它可以调用$this->myRefToMain->db
,要么传递 db
本身的实例,以便 utils 可以调用$this->db
。无论哪种方式,它都无法(合理地)爬取调用堆栈以查找调用它的对象。
对象 如果你
的类class_utils
可以在没有MainClass
的情况下存在。并且它的方法test()
应该访问类class_db
的一些对象db
。这意味着class_utils
取决于class_db
,您应该在构造函数中注入 class_db
对象,例如:
class MainClass {
public $db;
public $forms;
public $pagination;
function __construct() {
$this->db = new class_db();
$this->forms = new class_forms();
$this->utils = new class_utils($this->db);
}
}