inf*_*iac 13 php static abstract
我想这个问题更倾向于语言极客.我有以下课程:
<?php
abstract class ScopeFactory
{
public static function doStuff()
{
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我可以调用此函数,如下所示:
ScopeFactory::doStuff()
这很愉快.我总是在abstract不能直接使用类的印象下进行编码- 它们必须由具体类实现才能被调用.
我的印象static是它不需要实例可调用.
有人可以向我解释为什么这是合法的,如果它应该是?我很好奇细节.
如果不允许,我会感到惊讶.抽象类假设您无法实例化它.由于静态方法不需要类实例,因此您可以愉快地使用它们.
更深入地了解,您可以创建一个抽象静态方法并从非抽象方法中调用它:
abstract class ScopeFactory
{
public static function doStuff()
{
static::otherStuff();
}
abstract public static function otherStuff();
}
Run Code Online (Sandbox Code Playgroud)
PHP会给你一个致命错误,说你不能调用抽象方法.但它也会给你一个E_STRICT警告说你不应该创建抽象的静态方法.
| 归档时间: |
|
| 查看次数: |
3918 次 |
| 最近记录: |