我是php的新手,所以问题是转储。看一下下面的代码
class A {
private $obj;
public function A() {
$this->obj = new Obj();
//$this->obj->fff() works here;
//still var_dump($this->obj) prints NULL here
}
public f() {
//$this->obj is NULL here!!!
//$this->obj->ff() throws an error
}
}
f()
中的 UPD 我得到Fatal error: Call to a member function ff() on a non-object in ...
我应该如何$obj
初始化f()
?
提前谢谢!!
答案 0 :(得分:3)
尝试以下方法:
public function __construct() {
$this->obj = new Obj();
}
我认为问题是你错过了function
。我不是真正的PHP
人,但我认为public function A()
也可以,但__construct
是首选。
修改:现在您添加了function
。我不确定我的答案是否对你有帮助。
答案 1 :(得分:1)
您在函数名A()
中有一个类似于类名的错误。当您调用$a = new A;
时,A()
类的A
方法被调用。请改用__construct()
。
在我的服务器上,这很好用:
<?php
class A {
private $obj;
public function A() {
$this->obj = new stdClass();
}
public function f() {
var_dump($this->obj);
}
}
$aa = new A;
$aa->f(); // Prints `object(stdClass)#2 (0) { }`
?>
您的Obj
课程似乎有问题。为什么不在function
中将public f() {
放在班级定义中?