在PHP中,基线类是stdClass
,并且所有其他类都是该类的子类,并且它也是在大多数情况下返回的默认对象,其中没有定义其他类。
我的问题是,首先是否存在等效的系统定义的等效接口,如stdInterface
或类似的东西?
其次,是否存在系统定义的通用特征?我希望这不太可能,但如果没有一些确认,我不会排除它。
我不知道这样的构造,也找不到任何特定的参考,或者甚至之前被问过这个问题。在某些情况下,如果有一个或两个可用,它可能会有用。提前谢谢。
修改:正如deceze和mentioned elsewhere also所指出的那样,stdClass
不是根类,而只是一个通用对象。
答案 0 :(得分:1)
PHP中没有stdInterface或stdTrait,但您可以使用interface_exists和trait_exists来测试变量是接口还是特征,例如:
<?php
trait X {}
interface Y {}
var_export(interface_exists('Y'));
echo '<br>';
var_export(trait_exists('X'));
//Output:
//true
//true
答案 1 :(得分:1)
因此,
$object instancof \stdClass
将始终评估为true
。
这完全是demonstrably错误的。
PHP没有严格的自上而下的层次结构,没有顶级类,也没有顶级接口或特征。
您可以使用is_subclass_of
来确定类或接口是否与另一个类或接口相关而无需其实例:
interface Foo {}
class Bar implements Foo {}
interface Baz extends Foo {}
var_dump(is_subclass_of('Bar', 'Foo')); // true
var_dump(is_subclass_of('Baz', 'Foo')); // true