在PHP中,是否可以在函数的签名中键入提示两种类型


In PHP, is it possible to type hint two types in the signature of a function?

我想知道是否有一种方法可以键入hint-two-type。在网上搜索后,我找不到任何东西。

示例

class Product {
    public function __contruct(PDO||dbCon $dbCon) {
        // Do What Ever
    }
}

所以我想知道是否有类似的东西|

谢谢!

不,这目前在PHP中是不可能的。

不是直接的,但如果类由您来控制,则可以实现一个接口来覆盖这两个类。

interface databaseConnection {...}
class PDO implements databaseConnection {...}
class dbCon implements databaseConnection {...}
class Product {
    public function __construct( databaseConnection $dbCon) {
        // Do What Ever
    }
}

如果这些类不是您的,您可以实现适配器模式,使它们实现接口。

interface databaseConnectionAdaptor {...}
class PdoDatabaseConnectionAdaptor implements databaseConnectionAdaptor {
    public function __construct( PDO $pdo ) {...}
    ...
}
class DbConnDatabaseConnectionAdaptor implements databaseConnectionAdaptor {
    public function __construct( dbConn $dbCon ) {...}
    ...
}
class Product {
    public function __construct( databaseConnectionAdaptor $dbCon) {
        // Do What Ever
    }
}

您可能会发现这将大大简化产品类。

请参阅此处的适配器模式:http://en.wikipedia.org/wiki/Adapter_pattern