【问题标题】:PHP: Cannot set a value for a private static propertyPHP:无法为私有静态属性设置值
【发布时间】:2014-11-10 18:36:35
【问题描述】:

我有一个非常简单的问题,我试图设置一个私有静态属性值,该值由一个常量组成,并附加一些如下文本:

private static $cssDirectory = APP_ROOT.'css/';

我收到语法错误。我可以通过使私有变量不是静态的并使用构造函数分配一个值来解决这个问题,但是因为我希望它是静态的,所以我很好奇我能做些什么。我也可以为整个值设置一个常量并使用它,但我再次很好奇为什么我不能像我尝试过的那样做。也许我也做错了什么。谢谢。

【问题讨论】:

    标签: php properties static constants private


    【解决方案1】:

    来自 PHP 文档

    类成员变量称为“属性”...它们是通过使用关键字 public、protected 或 private 之一定义的,然后是普通的变量声明。这个声明可能包括一个初始化,但是这个初始化必须是一个常量值——也就是说,它必须能够在编译时被评估,并且不能依赖于运行时信息才能被评估。

    连接是一种运行时操作。

    你不需要在构造函数中实例化和设置属性值......你可以写一个静态的setter方法来代替

    还要注意PHP 5.6 确实允许对类属性进行这种类型的初始化

    编辑

    静态setter方法示例:

    private static $cssDirectory;
    
    public static setCssDirectory() {
        self::$cssDirectory = APP_ROOT.'css/';
    }
    

    然后你只需调用

    myClassName::setCssDirectory();
    

    在任何事情之前

    【讨论】:

    • 你能给我举个例子,说明你用“静态设置方法”指的是什么。
    猜你喜欢
    • 2013-11-19
    • 1970-01-01
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 2010-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多