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

Mar*_*ker 2 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');
}
Run Code Online (Sandbox Code Playgroud)

是否有人知道更清洁的方法来解决这个问题?

jh1*_*711 6

看一下反射API.手册

<?php
$d = new DateTime();
$r = new ReflectionClass($d);
echo ($r->isInternal());
Run Code Online (Sandbox Code Playgroud)