正如你注意到,表達式不允許作爲類固定值類,但它不會阻止你啓動默認視圖目錄一次,並用它在不同的場合:
class View
{
private $defaultViewDirectory;
public function __construct()
{
$this->defaultViewDirectory = $_SERVER["DOCUMENT_ROOT"] . "views/";
}
public function getDefaultViewDirectory()
{
return $this->defaultViewDirectory;
}
}
或者你可以實現像一個Singleton模式:
class View
{
private $defaultViewDirectory;
private function initDefaultViewDirectory()
{
$this->defaultViewDirectory = $_SERVER["DOCUMENT_ROOT"] . "views/";
}
public function getDefaultViewDirectory()
{
if (is_null($this->defaultViewDirectory)) {
$this->initDefaultViewDirectory();
}
return $this->defaultViewDirectory;
}
}
或者,如果你需要一個靜態訪問:
class StaticView
{
private static $defaultViewDirectory;
private static function initDefaultViewDirectory()
{
self::$defaultViewDirectory = $_SERVER["DOCUMENT_ROOT"] . "views/";
}
public static function getDefaultViewDirectory()
{
if (is_null(self::$defaultViewDirectory)) {
self::initDefaultViewDirectory();
}
return self::$defaultViewDirectory;
}
}
所以,你可以調用StaticView::getDefaultViewDirectory()
來源
2016-12-31 19:17:49
Ali
感謝。這很有幫助。但不幸的是我需要在靜態方法中使用常量,所以像你這樣的實例變量不會在靜態方法內參考。我投了你的答案,但我不能接受它,因爲它沒有解決我的問題。非常感謝您的寶貴時間。 –
公平的:)感謝您的投票,我已經更新了答案,以演示靜態訪問以及;) – Ali
實際上看看[最好的解決方法從表達式創建一個PHP類常量?](http:///stackoverflow.com/questions/18079131/best-workaround-to-create-a-php-class-constant-from-an-expression) – Ali