我一直在浏览PHP文档,试图确定是否有任何方法可以让我区分内置类的实例(如DateTime或PDO)和用户定义的类,但没有任何成功。
到目前为止,我发现的唯一方法是尝试将闭包绑定到实例。使用内置类执行此操作时,它会显示警告(yuk)并返回null。
$targetObject = new DateTime();
$closure = function();
$test = @$closure->bindTo($targetObject, get_class($targetObject));
if ($test === false) {
throw new Exception('General failure');
} elseif ($test === null) {
throw new Exception('Unable to bind to internal class');
}
是否有人知道更清洁地解决这个问题?
答案 0 :(得分:6)
看看反射API。 Manual
<?php
$d = new DateTime();
$r = new ReflectionClass($d);
echo ($r->isInternal());