2013-07-17 2 views
0

글쎄, 나는 더 오래된 객체 지향 모델에 나의 오래된 코드를 적용하려고 노력하고있다. 그러나 나는 그것을하는 데 어려움을 느낀다. 클래스의 구조는 다음과 같습니다.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 개체를 만들고 거기에서 다른 개체에 액세스하는 것입니다. DbConfig에서 상수를 필요로합니다. 그러나 에서 새 Config을 만들고 Db을 사용하고 싶지는 않습니다. Info에서도 마찬가지입니다.

+0

현재 주에서 액세스 할 수있는 객체 인? – steven

+0

이 코드는'$ Setting1 = $ Main-> Config :: Setting1'에 있습니다. T_PAAMAYIM_NEKDOTAYIM 오류가 발생합니다. – ali

+0

이러한 디자인의 목적은 무엇입니까? 첫째, var는 private, protected 또는 public으로 대체되어야합니다. 둘째로, 내부 클래스에 메소드를 작성하여 내부 메소드에 write 메소드 getSetting ($ a)과 같은 내부 객체를 사용할 수 있습니다. 그러면 자동으로 Config를 내부 멤버로 전달하여 Main 클래스 사용을 더 간단하게 만듭니다. 읽으려면 – insanebits

답변

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); 
관련 문제