Instanceof and namespaces

五迷三道 提交于 2019-11-29 09:27:33

You can test for instances using namespaces, but use the fully qualified class name.

For your test I would do this:

$class = "\\Tools\\Tests\\Entity\\testObject";
$object = new $class;
var_dump($object instanceof $class); //bool(true)

You can also test this way using single quotes and not worry about escaping your backslashes and save yourself a few keystrokes.

$class = '\Tools\Tests\Entity\testObject';
$object = new $class;
var_dump($object instanceof $class); //bool(true)

I use simpler variant

var_dump($object instanceof \Tools\Tests\Entity\testClass);

You should use ReflectionClass to avoid any execution or behaviours you have in\on this model. Read more aboit ReflectionClass to get more info about class\model we checking. http://php.net/manual/en/class.reflectionclass.php

foreach ($this->modelNamespaces as $namespace) {
    $reflectionClass = new \ReflectionClass($namespace);

    if ($reflectionClass->implementsInterface('common\models\FieldsInCollectionInterface')) {
        // class is implemented by FieldsInCollectionInterface
    }
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!