47
A
回答
76
當您在類的成員函數中編寫new self()
時,您將獲得該類的一個實例。 That's the magic of the self
keyword。
所以:
class Foo
{
public static function baz() {
return new self();
}
}
$x = Foo::baz(); // $x is now a `Foo`
你得到一個Foo
即使你使用的靜態預選賽是派生類:
class Bar extends Foo
{
}
$z = Bar::baz(); // $z is now a `Foo`
如果要啓用多態性(在一定意義上),和有PHP注意到您使用的限定詞,您可以將self
關鍵字換成static
關鍵字:
class Foo
{
public static function baz() {
return new static();
}
}
class Bar extends Foo
{
}
$wow = Bar::baz(); // $wow is now a `Bar`, even though `baz()` is in base `Foo`
這是通過名爲late static binding的PHP功能實現的;請勿將其用於關鍵字static
的其他常規用途。
相關問題
- 1. 「靜態合成」是什麼意思?
- 2. Java。靜態{實例=新實例();}這是什麼意思?
- 3. 是什麼意思:是什麼意思?
- 4. 對於Vars,靜態和動態是什麼意思?
- 5. C/C++:頭文件中的靜態函數,是什麼意思?
- 6. Dagger2文檔中的「完全靜態」是什麼意思?
- 7. 「導入」後的「靜態」修飾符是什麼意思?
- 8. Android中的「狀態」是什麼意思
- 9. 顯式變異和靜態心智模型是什麼意思?
- 10. 「?」是什麼意思?調用jsp的標記是什麼意思?
- 11. 「?」是什麼意思?
- 12. $$ $$是什麼意思?
- 13. 什麼是「||」意思?
- 14. 「\\。\」,「\ ?? \」,「\\?\」,「\\」是什麼意思?
- 15. 「=」是什麼意思
- 16. &**是什麼意思?
- 17. 是什麼意思?
- 18. 「_」是什麼意思?
- 19. 什麼是:!:意思?
- 20. || =是什麼意思?
- 21. %%是什麼意思?
- 22. =是什麼意思?
- 23. %{}是什麼意思?
- 24. + =是什麼意思?
- 25. '#'是什麼意思?
- 26. /([^.]*)\.(.*)/是什麼意思?
- 27. %*是什麼意思?
- 28. &@是什麼意思?
- 29. 刷新分支是什麼意思?下一步是什麼意思?
- 30. Groovy,什麼意思 - >意思是
這是什麼框架? – 2013-04-09 09:55:59
例如laravel,但我發現只有在核心,而不是在使用他們的API時 – Hello 2013-04-09 09:56:16
檢查此頁的更多信息; http://stackoverflow.com/questions/5197300/new-self-vs-new-static – 2013-04-09 09:57:14