[英]Organize and relate class in PHP
好吧,我正在嘗試將舊代碼改編為面向對象的模型,但是這樣做很困難。 我的類的結構如下所示:
// config.php
class Config {
const Setting1 = 'value';
const Setting2 = 'value';
}
// main.php
include 'config.php'
class Main {
var $Config;
var $Info;
var $Db;
function _construct() {
$this->Config = &new Config;
$this->Info = &new Info;
$this->Db = &new Db($this);
}
}
class Info {
function getSetting($a, $Config) {
if ($a>0) return $Config::Setting1;
return $Config::Setting2;
}
}
class Db {
function _construct($Main) {
$Setting1 = $Main->Config::Setting1;
}
}
// index.php
$Main = new Main;
echo $Main->Info->getSetting(1, $Main->Config);
因此,如您所見,此代碼中有不正確的內容。 我想要的是在Main
類中擁有所有內容,創建$Main
對象,然后從那里訪問任何其他對象。 Db
將需要Config
一個常量,但是我不想在Db
創建新的Config
,而是使用Main
的一個。 信息也會發生同樣的情況。
該問題應通過以下方法解決:
// config.php
class Config {
public static $Setting1 = 'value';
public static $Setting2 = 'value';
}
// main.php
include('config.php');
class Main {
private $Info = null;
private $Db = null;
public function _construct() {
$this->Info = new Info();
$this->Db = new Db();
}
public function getSetting($a) {
return $this->Info->getSetting($a);
}
}
class Info {
public function getSetting($a) {
if ($a>0) return Config::$Setting1;
return Config::$Setting2;
}
}
class Db {
public function _construct() {
$Setting1 = Config::$Setting1;
}
}
// index.php
$Main = new Main();
echo $Main->getSetting(1);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.