我曾认为多种类型提示是不可能的。但是,我在Symfony API Documentation文档中看到了这个构造函数。
__construct(array $options = array(), AbstractProxy|NativeSessionHandler|SessionHandlerInterface|null $handler = null, MetadataBag $metaBag = null)
对于第二个参数,它似乎可以使用多种类型。有人可以解释我所看到的吗?
答案 0 :(得分:3)
这是一个很好的问题,虽然答案是它实际上并不是语言意义上的类型暗示。更多文档
它是在source中定义的,没有类型提示
public function __construct(array $options = array(), $handler = null, MetadataBag $metaBag = null)
功能存在的位置,它只是用instanceof检查文档中列出的所有类型提示
if (!$saveHandler instanceof AbstractProxy &&
!$saveHandler instanceof NativeSessionHandler &&
!$saveHandler instanceof \SessionHandlerInterface &&
null !== $saveHandler) {
throw new \InvalidArgumentException('Must be instance of AbstractProxy or NativeSessionHandler; implement \SessionHandlerInterface; or be null.');
}
这些提示被IDE用于一致性检查代码,如Pazi在评论中提到的那样
可在此处找到更多信息
http://www.phpdoc.org/docs/latest/guides/types.html
为了能够跟踪值中可以使用的类型,您可以使用 pipe,或OR,(|)运算符来分隔关联的每个类型 价值可能是。
在以下示例中,方法或函数将返回a string或null作为值:
/ ** @return string | null * /大多数IDE会将此格式识别为 好,并提供自动完成