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