如何访问类中的其他类方法(PHP)


How to access other classes methods within a class (PHP)

我正在构建一个供个人使用的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);
    }   
}