在PHP内部类和用户定义的类之间进行标识

时间:2017-08-06 11:21:32

标签: php class php-7

我一直在浏览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');
}

是否有人知道更清洁地解决这个问题?

1 个答案:

答案 0 :(得分:6)

看看反射API。 Manual

<?php
$d = new DateTime();
$r = new ReflectionClass($d);
echo ($r->isInternal());