2009-09-03 102 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的工作,这是更灵活的...