簡體   English   中英

如何訪問類中的其他類方法(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()(另一種測試方法)中,是能夠訪問$ MainClass-> db而不使用global或$ GLOBALS。

是否有其他方法可以實現這一目標? 能夠訪問另一個子方法中的$ MainClass方法和子方法(從utils和初始化MainClass的主頁訪問db)? 會怎么樣 我希望能夠訪問所有子方法,例如utils能夠訪問db和Forms方法。 以及MainClass之外的頁面。

謝謝

如果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);
    }   
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM