2010-08-16 1 views
1

저는 객체 지향 PHP를 최대한 활용하고 그 길을 따라 뭔가를 배우려고합니다. 이 템플릿서로 통신 할 수있는 여러 클래스가 포함 된 클래스를 만드는 방법은 무엇입니까?

class Repository { 

    private $vars = array(); 

    public function __set($index, $value){ 
     $this->vars[$index] = $value; 
    } 

    public function __get($index){ 
     return $this->vars[$index]; 
    } 
} 
/* 
*/ 
function __autoload($class_name) { 
    $filename = strtolower($class_name) . '.class.php'; 
    $path = dirname(__FILE__); 
    $file = $path.'/classes/' . $filename; 

    if (file_exists($file) == false){ 
     return false; 
    } 
    include ($file); 
} 
//Main class intialization 
$repo = new Repository; 
//Configuration loading 
$repo->config = $config; 
//Classes loading 
$repo->common = new Common($repo); 
$repo->db = new Database($repo); 
$repo->main = new Main($repo); 

그런 다음 각 클래스가 따를 것입니다 :

class Database{ 

    private $repo; 

    function __construct($repo) { 
     $this->repo= $repo; 
    } 
} 

내가로드 된 클래스의 모든 방법과 바르에 액세스 할 수 있습니다이 방법을 MVC 튜토리얼을 따라 나는이 작업을 수행 할 수 있었다 한 전에 나는에있어 예에서 내가 메인 클래스에서이 작업을 수행하기 전에 :.

$this->repo->db->someMethod(); 

나를 치는 것은 객체 $의 REPO 각 시각을 중복됩니다 있다는 것입니다 ew 클래스가로드됩니다.이 문제는 메모리 문제입니까? 이 작업을 수행하는 더 좋은 방법이 있습니까? 실제 프로젝트에서 사용할 수있는 것입니까?

당신에게 대단히 감사합니다

+1

관련 가능성이 좋은 읽기 : http://stackoverflow.com/questions/1812472/in-a-php-project-how-do-you-organize-and-access-your-helper- objects –

+0

@Pekka 정말 멋진 독서에 감사드립니다! – 0plus1

답변

3

아니에요 아주 당신이 (필자는 다르게이 작업을 수행하는 방법에 대해 오는 일부 metacomment이있는 것 같아요;) 달성하기 위해 노력하고 무엇인지,하지만 당신은 메모리 사용량에 대해 휴식을 취할 수 있습니다 ; 당신은 단지 같은 객체에 대한 참조를 전달하기 때문에 복제 된 것은 모두 객체 인스턴스에 대한 포인터의 4 바이트 분량입니다!

+0

나는 아무것도 얻으려고하지 않고있다. 나는 프로그래밍을 망치고 뭔가를 배우는 중이다. – 0plus1

+1

나는 당신이 아무것도 얻으려고하지 않는다는 것을 믿지 않는다 :) 어쨌든, 당신의 질문의 메타 측면은 @ Pekka의 대답에 의해 잘 다뤄져 있다고 생각한다. – Nicolas78

관련 문제