2013-04-21 3 views
0

인스턴스화 할 때 사용해야하는 기본 데이터베이스 연결이 포함 된 각 클래스에 정적 멤버를 추가하려고합니다. 방법은 다음과 같습니다.PHP에서 변수 클래스의 정적 멤버 설정

<?php //other classes extend Generic 
class Generic { 
    public static $defaultDatabase; 
    public $db; 

    function __construct (&$pDatabase = null){ 
     if ($pDatabase!==null) 
      $this->db = &$pDatabase; 
     else 
      $this->db = &$defaultDatabase; 
    } 
} 
?> 


<?php 
include_once("/classes/class.Database.php"); 
$db = new Database ("localhost", "username", "password", "TestDatabase"); 

$classes = array("Generic", "Member"); 
foreach ($classes as $class){ 
    include_once("/classes/class.$class.php"); 
    $class::defaultDatabase = &$db;//throws error here, unexpected "=" 
} 

?> 

내가 뭘 잘못하고 있니? 이 더 좋은 방법이 있나요 아니면 개별적으로 각 클래스에 대한 defaultDatabase 설정해야합니까? 나는 PHP 5.3을 사용하고 있는데, 이것은 내가 이와 같은 것을 지원해야한다는 것을 이해한다. static properties 액세스 할

답변

1

$class::defaultDatabase = &$db 

당신은 defaultDatabase 전에 $를 추가해야

1

사용 self::$propertyName :

function __construct (&$pDatabase = null){ 
    if ($pDatabase!==null) 
     $this->db = &$pDatabase; 
    else 
     $this->db = self::$defaultDatabase; 
} 

$var는 또한 개체의 경우, 기준 조작 &$var를 사용하는 의미임을 유의. 이것은 PHP의 모든 객체가 실제로 참조이기 때문입니다. 정적 속성이

$class->property;

를 통해 액세스하는 다른 사람들과는 달리

ClassName::$staticProperty

통해 액세스되기 때문에이 코드에서

+0

잘 알고 있습니다. ,하지만 내가 필요한 대답은 아닙니다. 그래도 고마워. – watchwood