簡體   English   中英

用PHP組織和關聯類

[英]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.

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