用对象初始化类字段

时间:2012-05-05 07:28:35

标签: php

我是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()

提前谢谢!!

2 个答案:

答案 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() {放在班级定义中?