2010-12-10 8 views
0

속성이 호출되면 객체를 자동 생성하는 방법이 있는지 궁금합니다. 예 :속성이 호출 될 때 객체를 자동으로 만듭니다.

<?php 
    echo $myObj->myProperty 
?> 

이 코드는 물론 속성을 읽기 전에 $ myObj를 시작하지 않았기 때문에 실패합니다. "myObj"를 기반으로 $ myObj를 자동으로 시작하는 방법을 찾고 있습니다. 내가 __autoload에 대해 알고

<?php 
class myObj { 
    public myProperty = 'BlaBla'; 
} 
echo $myObj->myProperty; //outputs BlaBla instead of failing 
?> 

($ 클래스 이름)하지만 그 후 메신저되지 것입니다 있도록이() 포함 즉와 시작 classcode의 유일한 작품 :

같은 뭔가.

preg_match_all("/\\\$(.*?)->/si", $code, $matches); 

I 루프 쓰루 :

+2

를 해결하는 것 같습니다. 소품에 액세스하기 전에 왜 객체를 초기화 할 수 없습니까? (나는 당신이 정적 인 액세서가 아닌 인스턴스가 될 필요가 있다고 가정하고 있습니다.) –

+0

데이터베이스의 일부 내용을 eval()하는 스크립트가 있기 때문입니다. 이 콘텐츠에는 아직 생성되지 않은 개체에 대한 호출이 포함될 수 있습니다. 필요할 수도있는 모든 객체를 만들 수는 있지만 필요하지 않은 이유는 무엇입니까? 그것은 단지 CPU 시간과 메모리를 취할 것입니다 – sunebrodersen

답변

0

그냥이 질문을 닫습니다, 이것은 내가하고 결국 무엇인가 코드에서 데이터베이스와 같은 객체에 대한 참조를 찾는 것

$xxxx-> 

그럼 내가 루프는 참조 물마루하고 "loadConnector이 객체

  foreach($matches[1] as $key=>$value) { 
      $$value = Connector::loadConnector($value); 
     } 

만들 :

public function loadConnector($connector, $params = NULL) { 
    require_once $connector. ".php"; 
    $c_name = $connector; 
    return new $c_name($params);  
} 

이 내 파일 구조를 기반으로 물론입니다 그리고 그것은 또한 지금까지 일부 에러 처리를 필요로하지만, 내 문제 : 나는 이런 종류의에 대한 합법적 인 사용 생각할 수 없다

BR/Sune

관련 문제