2009-09-03 148 views
3

我已經在PHP中構建了一個類,並且我必須聲明一個類變量作爲對象。每次我要聲明一個空物體使用:PHP對象類變量

$var=new stdClass; 

但是,如果我用它來聲明一個類變量

class foo 
{ 
    var $bar=new stdClass; 
} 

出現解析錯誤。有沒有辦法做到這一點,或者我必須聲明類變量作爲構造函數中的對象?

PS:我使用PHP 4

回答

5

只能聲明靜態值,這樣的類成員,即intsstringsboolsarrays等。你不能做任何涉及任何形式的處理的事情,比如調用函數或創建對象。

你必須在構造函數中完成它。

Relevant manual section

在PHP 4中,僅var變量初始化爲常量。要使用非常量值初始化變量,需要一個初始化函數,當從該類構造對象時,將自動調用該函數。這樣的函數被稱爲構造函數(見下文)。

2

你不應該在這裏創建你的對象。

你最好寫setter和getter

<?php 
    class foo 
    { 
     var $bar = null; 

     function foo($object = null) 
     { 
      $this->setBar($object); 
     } 

     function setBar($object = null) 
     { 
      if (null === $object) 
      { 
      $this->bar = new stdClass(); 
      return $this; 
      } 

      $this->bar = $object; 
      return $this; 
     } 
    } 

順便說一句,你應該使用PHP5與OOP的工作,這是更靈活的...