找出变量的类型提示 – PHP

有没有办法找出变量上放置了什么类型:

...function( IInterface $blah )
{
    if( gettypehint( $blah ) == IInterface )
    {
        echo "yay";
    }
}

我意识到在这种情况下这是毫无意义的,但这是为了简化问题.

编辑以帮助回答:

实际上问题是我正在实现一种工厂类.在那个工厂里,我需要知道扩展Factory的类的参数是什么.如果它是一个IInterface然后做一个新的ThingINeed,但如果它是IPoopy类型,那么我需要一个新的Poopy.之类的事情.

所以我在实现一个工厂类之后,根据实现工厂的类中声明的类型提示来决定需要实例化哪个类.

所以我的情况实际上是这样的:

    public function AddBinding( $interface, $concrete )
    {
        $calledClass = get_called_class();
        $class = new \ReflectionClass( $calledClass );

        $method = $class->getMethod( "__construct" );
        $params = $method->getParameters();

        foreach( $params as $param )
        {
            if ( $param instanceof $interface )
            {
                return new $concrete();
            }
        }
    }

参考:How to implement a factory class using PHP – Dependancy injection

最佳答案 如…检查参数的实例?

instanceof:http://www.php.net/manual/en/internals2.opcodes.instanceof.php

但是考虑到你已经假设你的参数NEEDS是一个instanceOf IInterface,如果PHP能够正常工作,那么双重检查可能有点奇怪.
除非我错过了什么.

点赞