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; //这样也不可以啊? 用类成员的函数操作?
$cls = new B ; $cls->f();//因为你的vo属性在这个方法里赋的值啊! $cls->vo->tmp = 1;
class B { var $vo = A; //这里就不对了! var $tmp = 0 ; }
$cls->vo->tmp = 1; //我测试这样赋值好像不可以啊?
那这样:class B { var $vo ; var $tmp = 0 ; function f() { $this->vo = new a; } }
在使用中: $cls = new B ; $cls->f(); $cls->vo->tmp = 1; //这样可以么?还是必须用成员函数赋值
$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;
$cls->f();//因为你的vo属性在这个方法里赋的值啊!
$cls->vo->tmp = 1;
{
var $vo = A; //这里就不对了!
var $tmp = 0 ;
}
那这样:class B
{
var $vo ;
var $tmp = 0 ;
function f()
{
$this->vo = new a;
}
}
在使用中:
$cls = new B ;
$cls->f();
$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;