2015-05-01 103 views
0

我試圖在不使用任何方法的情況下實現它。類const中的靜態類

這有可能以任何方式嗎?

class Foo extends Bar{ 
    const foo = static::class; 
} 
+0

好的,我會繼續打獵。 –

+0

我給了你一個答案,但是如果你描述了你到底想要達到什麼 - 也許我們可以爲你的問題找到更好的解決方案。 –

+0

那麼,我有一個系統,很大程度上利用繼承。只是一個有趣的「讓我們設定,如果我們能做到」的項目。我在16個小時前問了這個問題,從那以後我決定在這個特定的例子中我採取了錯誤的做法。感謝您的幫助! –

回答

2

https://php.net/manual/en/language.oop5.properties.php

初始化必須是一個恆定值 - 也就是說,它必須能夠在編譯時進行評估,並以不能依賴於運行時的信息進行評估。

static是惰性評估,並且僅在運行時評估,因此這是不可能的。

也瞭解 late static bindings

延遲靜態綁定[...]引用最初被稱爲在運行類。

+0

Const標量屬性應該在[PHP5.6](https://wiki.php.net/rfc/const_scalar_exprs)中可用 – DarkBee

+1

'static'不是標量;這是對「self」的懶惰(運行時)評估。 –

+0

我打算接受你的回答。我已經決定,這甚至是我不得不問的一個問題歸結爲我的糟糕的代碼設計的原因。 –