在PHP中使用静态变量

时间:2011-10-11 08:34:17

标签: php

是否可以使用另一个静态变量来初始化php中的另一个静态变量?

public static $conf_siteroot = "http://mysite.com/";
 public static $conf_docroot = "C:/Users/Mp/Documents/Projects/nana/webroot/";

 public static $conf_doclib = $conf_docroot."library/";
 public static $conf_sitelib = $conf_siteroot."library/";

这段代码根本不起作用,但我需要重用静态变量,所以我不会写太多。感谢

3 个答案:

答案 0 :(得分:0)

简短的回答是 - 没有

但您可以在_clone _construct中重新初始化静态变量。 但这并不是你需要的

你可以这样写:

<?
// file Foo.php

class Foo {
    public static $prefix = 'foo';
    public static $bar;
}

// Bootstrapping
foo::$bar = foo::$prefix . '/bar';

答案 1 :(得分:0)

您无法在运行时动态地为静态属性赋值。

但是,您可以编写静态getter函数来返回您正在查找的值:

class Foo 
{
    public static $conf_siteroot = "http://mysite.com/";
    public static $conf_docroot = "C:/Users/Mp/Documents/Projects/nana/webroot/";

    /**
     * exemplary getter function for the ConfDocLib value
     */
    public static function getConfDocLib()
    {
        return self::$conf_docroot."library/";
    }
    ...
}

Foo::getConfDocLib(); # your dynamic value, statically accessible globally.

或者您将它们分配给超全局数组$_GLOBALS,这可能与您的公共静态属性几乎相同。只是另一个想法。

答案 2 :(得分:0)

你不能这样做。

  

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