1

这无疑是一个超级愚蠢的问题,我开始掌握类并试图分配一个变量,如果我使用一个字符串作为变量值它工作正常但是当我使用时:

class MyTest{
    private $my_date = date("Y-m-d H:i:s");
}

$my_test = new MyTest;
echo $my_test->$my_date;

然后我得到一个服务器错误,但它没有打印任何日志说什么是错误的,dreamviewer 也将它显示为一个错误,但如果我将它加载到类之外它很好。

请不要笑,我做错了什么?

如果我这样做

class MyTest{
    private $my_date = "today";
}

$my_test = new MyTest;
echo $my_test->$my_date;

然后我没有错误。

4

2 回答 2

4

声明类变量时不能调用函数。您需要在类构造函数中设置值。像这样:

class MyTest{
    private $my_date;

    public function __construct() {
        $this->my_date = date("Y-m-d H:i:s");
    }
}

见这里:http ://www.php.net/manual/en/language.oop5.properties.php

类成员声明“可能包括一个初始化,但这个初始化必须是一个常量值——也就是说,它必须能够在编译时被评估,并且不能依赖运行时信息才能被评估。”

于 2013-08-16T01:23:18.283 回答
2

像您这样在声明时调用函数是不可能的。像这样做:

class MyTest{
    public $my_date;

    function __construct() {
        $this->my_date = date("Y-m-d H:i:s");
    }
}

$my_test = new MyTest;
echo $my_test->my_date;

除此之外,如果您想从类外部调用它,则必须将变量设为 public。并且调用变量是在 -> 之后没有 $ 完成的。

于 2013-08-16T01:31:26.603 回答