好吧,我正在尝试将我的旧代码调整为更面向对象的模型,但我发现这样做有困难。我的类的结构如下所示:
// 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
的常量,但我不想在Config
内创建新的Db
,而是使用Main
中的{{1}}。信息也是如此。
答案 0 :(得分:0)
问题应该由此解决:
// 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);