类的成员可以用另一个类来声明么,对这个成员的赋值度需要this函数这样么
程序员文章站
2022-04-18 12:27:32
...
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->vo->tmp = 1; //我测试这样赋值好像不可以啊?
$cls->vo->tmp = 1; //我测试这样赋值好像不可以啊?
你的代码估计写错了。
下面的代码与你逻辑相同,执行起来和期望效果相同
{
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 = new B ;$cls->f();//因为你的vo属性在这个方法里赋的值啊!$cls->vo->tmp = 1;
$cls->vo->tmp = 1; //我测试这样赋值好像不可以啊?
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->f();
$cls->vo->tmp = 1; //这样可以么?还是必须用成员函数赋值
$cls = new B ;$cls->f();//因为你的vo属性在这个方法里赋的值啊!$cls->vo->tmp = 1;
$cls->vo->tmp = 1; //我测试这样赋值好像不可以啊?
你的代码估计写错了。
下面的代码与你逻辑相同,执行起来和期望效果相同
attrV = new A(); }}$obj_b = new B();$obj_b->setAttrV();$obj_b->attrV->attrA = 'A';echo '$obj_b->attrV->attrA=' . $obj_b->attrV->attrA;
谢谢楼上各位,程序里面落下个分号!
上一篇: PHP 700 正式发布,速度是 PHP 56 的两倍
下一篇: PHP发表心情投票功能