为什么不能使用property而不是__construct?

时间:2010-07-20 01:10:57

标签: php oop

开始使用oop

为什么:

class user 
{
    private $pdo;

    function __construct()
    {
        $this->pdo = singleton::get_instance()->PDO_connection();
    }

...
}

这很好用。但是这个:

class user 
{
    private $pdo = singleton::get_instance()->PDO_connection();

...
}

这不起作用。错误parse error, expecting ','' or ';'' in ...

第二个变种出了什么问题?

2 个答案:

答案 0 :(得分:3)

请参阅Properties中<{3}}的第一段的最后一句:

  

调用类成员变量   “属性”。你也可以看到它们   提到使用其他术语,如   “属性”或“字段”,但对于   我们将使用此参考的目的   “属性”。它们的定义是   使用关键字public之一,   受保护的,或私人的,然后是   正常变量声明。这个   声明可能包括   初始化,但是这个   初始化必须是常量   价值 - 也就是说,它必须能够   在编译时评估,但不得   依赖于运行时信息   为了评估。

换句话说,此语句返回的数据库处理程序是一个常量值,因此在编译时不可用:

singleton::get_instance()->PDO_connection();

答案 1 :(得分:0)

使用函数在声明时无法分配类属性。标量值,常量(虽然不是当前类的常量)和仅数组。