您好,欢迎访问一九零五行业门户网

新手请教下,类属性能初始化为一个其他类的实例对象吗

新手请问下,类属性能初始化为一个其他类的实例对象吗
如果行的话,那语法是什么样的?
------解决方案--------------------
class a {}
class b {
public $o;
function __construct() {
$this->o = new a;
}
}
$p = new b;
print_r($p);
b object
(
[o] => a object
(
)
)

------解决方案--------------------
引用:@xuzuning版主
parameter=$parameter;
echo test类构造方法被调用
;
}
public function getparameter(){
echo $parameter;
}
}
class test1{
private static $test=null;
public function __construct(){
$test = new test(test);
echo test1类构造方法被调用
;
}
public static function show(){
echo show()方法被调用;
self::$test->getparameter();//
}
}
$test1 = new test1();
test1::show();
?>
以上代码这句:self::$test->getparameter();会报fatal error: call to a member function getparameter() on a non-object,我把test1类的属性$test改为普通属性,show()方法改为普通方法,还是报同样的错误,为什么?
你的程序写错了。
1.第9行,你要显示$parameter属性,应是 echo $this->parameter; 而不是echo $parameter;
2.第15行 $test = new test(test); 这个赋值并不会赋值到 private static $test,所以第20行的self::$test 是等于null
因此15行需要改为 self::$test = new test(test);
修改后的程序如下:
parameter=$parameter;
echo test类构造方法被调用
;
}
public function getparameter(){
echo $this->parameter; // 修改这里
}
}
class test1{
private static $test=null;
public function __construct(){
self::$test = new test(test); // 修改这里
echo test1类构造方法被调用
;
}
public static function show(){
echo show()方法被调用;
self::$test->getparameter();//
}
}
$test1 = new test1();
test1::show();
?>

test类构造方法被调用
test1类构造方法被调用
show()方法被调用test
最后不得不说,自己有问题应该开贴,不应该在别人贴里面问。
其它类似信息

推荐信息