首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类属性中的PHP函数调用

问类属性中的PHP函数调用
EN

Stack Overflow用户
提问于 2013-02-02 18:33:07
回答 3查看 5.2K关注 0票数 5

为什么我不能用PHP来做这个呢?其中,Database是一个单例类,而getInstance()返回一个PDO对象。

代码语言:javascript
复制
<?php

class AnExample
{
    protected static $db = Database::getInstance();

    public static function doSomeQuery()
    {
        $stmt = static::$db->query("SELECT * FROM blah");
        return $stmt->fetch();
    }
}

与任何其他PHP静态变量一样,静态属性只能使用文字或常量进行初始化;表达式是不允许的。因此,虽然可以将静态属性初始化为整数或数组(例如),但不能将其初始化为另一个变量、函数返回值或对象。

http://php.net/manual/en/language.oop5.static.php

为什么?!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-02 18:36:40

http://php.net/language.oop5.properties

类成员变量称为“属性”。您可能还会看到它们使用其他术语,如“属性”或“字段”,但为了本引用的目的,我们将使用“属性”。它们是通过使用一个关键字公共、受保护或私有,然后是一个普通变量声明来定义的。这个声明可能包括一个初始化,但是这个初始化必须是一个常量值--也就是说,它必须能够在编译时被求值,并且必须不依赖于运行时信息才能被计算。

重要的是

也就是说,它必须能够在编译时进行评估。

表达式是在运行时计算的,因此不可能使用表达式初始化属性:它们只是还不能计算。

票数 5
EN

Stack Overflow用户

发布于 2013-02-02 18:36:33

( RTM ;)

请参阅properties http://www.php.net/manual/en/language.oop5.properties.php第一段的最后一句。

这个声明可能包含一个初始化,但是这个初始化必须是一个常量值--也就是说,它必须能够在编译时被求值,并且不能依赖于运行时信息来进行计算。

票数 0
EN

Stack Overflow用户

发布于 2013-02-02 18:57:16

您不能执行代码来生成静态变量的值,因为根据定义,静态变量在编译时会受到影响,请参见:

获取变量的运行时值或调用函数(运行时也不能)不能在编译时完成,因为它们不会受到静态变量的影响。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14665097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档