php如何检查对象的类型,如何在PHP中检查特定类型的对象

小编典典

if ($pdo instanceof PDO) {

// it's PDO

}

但是请注意,您不能像否定!instanceof,所以您应该这样做:

if (!($pdo instanceof PDO)) {

// it's not PDO

}

另外,查看您的问题,您可以使用对象类型提示,它有助于强制执行要求并简化检查逻辑:

function connect(PDO $pdo = null)

{

if (null !== $pdo) {

// it's PDO since it can only be

// NULL or a PDO object (or a sub-type of PDO)

}

}

connect(new SomeClass()); // fatal error, if SomeClass doesn't extend PDO

输入的参数可以是必需的或可选的:

// required, only PDO (and sub-types) are valid

function connect(PDO $pdo) { }

// optional, only PDO (and sub-types) and

// NULL (can be omitted) are valid

function connect(PDO $pdo = null) { }

无类型的参数可通过显式条件实现灵活性:

// accepts any argument, checks for PDO in body

function connect($pdo)

{

if ($pdo instanceof PDO) {

// ...

}

}

// accepts any argument, checks for non-PDO in body

function connect($pdo)

{

if (!($pdo instanceof PDO)) {

// ...

}

}

// accepts any argument, checks for method existance

function connect($pdo)

{

if (method_exists($pdo, 'query')) {

// ...

}

}

至于后者( respond_to?,无论好坏,它都是熟悉的。我将亲自编写一个接口并针对该接口执行普通的类型提示:

interface QueryableInterface

{

function query();

}

class MyPDO extends PDO implements QueryableInterface { }

function connect(QueryableInterface $queryable) { }

但是,这并不 总是 可行的。在此示例中,PDO对象不是有效的参数,因为基本类型未实现QueryableInterface。

还值得一提的是,在PHP中, 值具有类型 ,而不是变量。这很重要,因为null将使instanceof检查失败。

$object = new Object();

$object = null;

if ($object instanceof Object) {

// never run because $object is simply null

}

当值变成时,它失去类型null,缺少类型。

2020-05-29

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值