是否可以使用另一个静态变量来初始化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/";
这段代码根本不起作用,但我需要重用静态变量,所以我不会写太多。感谢
答案 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 函数返回值,或对象。