class A
{
   var $sun = '';
   var $sav = false;
}class B
{
   var $vo = A;
   var $tmp = 0 ;
}这样不对吧?那这样:class B

    var $vo ;
   var $tmp = 0 ;
   function f()
   {
      $this->vo = new a;
    }
}在使用中:
$cls = new B ;
$cls->vo->tmp = 1; //这样也不可以啊? 用类成员的函数操作?

解决方案 »

  1.   

    $cls = new B ;
    $cls->f();//因为你的vo属性在这个方法里赋的值啊!
    $cls->vo->tmp = 1; 
      

  2.   

    class B
    {
       var $vo = A; //这里就不对了!
       var $tmp = 0 ;
    }
      

  3.   

    $cls->vo->tmp = 1;  //我测试这样赋值好像不可以啊?
      

  4.   


    那这样:class B
     {
         var $vo ;
        var $tmp = 0 ;
        function f()
        {
           $this->vo = new a;
         }
     }
     
    在使用中:
     $cls = new B ;
     $cls->f();
     $cls->vo->tmp = 1; //这样可以么?还是必须用成员函数赋值
     
      

  5.   

    $cls->vo->tmp = 1;  //我测试这样赋值好像不可以啊?
    你的代码估计写错了。
    下面的代码与你逻辑相同,执行起来和期望效果相同
    <?php
    class A {}
    class B {
    var $attrV;
    function setAttrV()
    {
    $this->attrV = new A();
    }
    }$obj_b = new B();
    $obj_b->setAttrV();
    $obj_b->attrV->attrA = 'A';
    echo '$obj_b->attrV->attrA=' . $obj_b->attrV->attrA;