讓我們假設我安排在班我的代碼和每個類都有自己的文件:PHP - 從嵌套類訪問父類成員
- main.php,上課主要
- 的config.php具有類配置
- security.php具有類SECURI TY
- database.php中上課數據庫
現在,主要的構造函數將初始化3個對象,每個對應一個其他類的,而這一切的方式看起來會比較或不像一個類/子類。問題是,現在安全可能需要一些東西(變量或功能)從配置和數據庫東西來自安全。
// main.php
// here I include the other files
class Main {
functions __constructor() {
$this->Config = new Config();
$this->Security = new Security();
$this->Database = new Database();
}
}
// config.php
class Config {
public $MyPassword = '123456';
public $LogFile = 'logs.txt';
// other variables and functions
}
// security.php
class Security {
functions __constructor() {
// NOW, HERE I NEED Config->Password
}
function log_error($error) {
// HERE I NEED Config->LogFile
}
}
// database.php
class Database {
functions __constructor() {
// Trying to connect to the database
if (failed) {
// HERE I NEED TO CALL Security->log_error('Connection failed');
}
}
}
那麼,如何共享裏面主要這些嵌套類之間的函數和變量?當然,我可以將這些變量作爲參數發送給構造函數,但是當我們需要5或10個變量時會發生什麼?我可以在整個對象發送配置到安全和安全到數據庫,
// main.php
// here I include the other files
class Main {
functions __constructor() {
$this->Config = new Config();
$this->Security = new Security($this->Config);
$this->Database = new Database($this->Security);
}
}
而且是可靠的?我可以只發送參考文件(如C++中的指針)嗎?也許我可以在構造函數中將這個對象的引用作爲參數發送出去,這樣就可以讓所有東西都可用。
// main.php
// here I include the other files
class Main {
functions __constructor() {
$this->Config = new Config();
$this->Security = new Security(&$this);
$this->Database = new Database(&$this);
}
}
我甚至不知道這是否可能。 你覺得呢?有沒有更多的傳統方式?
配置可能是一個靜態類。或者,你的類可以繼承基類Config。 –
數據庫需要安全和安全需要配置。如果安全性繼承Config和數據庫繼承安全性,數據庫是否繼承Config?如果安全需要數據庫呢? – ali
是的,它確實繼承了配置:) –