![](/img/trans.png)
[英]How can extend in proper way some php classes for have access from child class to all public methods from other child class?
[英]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.