0

我是 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
    }
}

UPDf()我得到Fatal error: Call to a member function ff() on a non-object in ...

我应该如何初始化$obj才能看到它f()

先感谢您!!

4

2 回答 2

3

尝试以下操作:

public function __construct() {
     $this->obj = new Obj();
}

我认为问题是你错过了function。我不是一个真正的PHP人,但我认为public function A()也可以,但这__construct是首选。

编辑:现在您添加了function. 我不确定我的回答是否会对您有所帮助。

于 2012-05-05T07:30:41.603 回答
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课有问题。你为什么不在你functionpublic f() {类定义中加入呢?

于 2012-05-05T07:35:54.827 回答