有没有一种方法可以找出变量上放置的类型提示:
...function( IInterface $blah )
{
if( gettypehint( $blah ) == IInterface )
{
echo "yay";
}
}
在这种情况下,我意识到这是无意义的,但它是为了简化问题。
编辑以帮助回答:
实际上,我的问题是我正在实现一种工厂类。在该工厂中,我需要知道扩展工厂的类的参数是什么。如果它是一个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();
}
}
}
instanceof
?它可以与接口一起使用,正如此处的示例4所示:http://www.php.net/manual/en/language.operators.type.php - Darragh Enright