【问题标题】:How to check if a PHP class has a parent (Also it extends another)?如何检查 PHP 类是否有父类(它也扩展了另一个)?
【发布时间】:2015-08-02 05:33:09
【问题描述】:

我正在尝试检查我的 PHP 类是否正在扩展另一个类。我可以使用get_parent_class() 检索类本身,但是在检查它是否为空时,它只是抛出了一个空指针异常。

如果类被扩展,我想得到一个为真的布尔值。从而避免空指针异常。

【问题讨论】:

  • 我怀疑它对你的问题有帮助,但如果没有找到父级,get_parent_class() 返回 false,而不是 null。可能值得检查。
  • 你能看到类的代码吗?
  • 谢谢,它返回 false 帮助很大。似乎在 php.net 上缺少这方面的文档。我能够在实际构建类之前添加一个检查。
  • PHP 有“空指针异常”?!

标签: php class inheritance extend


【解决方案1】:

http://php.net/manual/en/function.class-parents.php

成功时为数组,错误时为 FALSE。

function hasParents($object) {
    $parents = class_parents($object);
    return is_array($parents) && !empty($parents);
}

UPD.:简化方式

function hasParents($object) {
    return (bool)class_parents($object);
}

https://extendsclass.com/php-bin/dfa71d0

【讨论】:

  • return (bool)class_parents($object); - 请保持简单。
  • 或者,更具可读性:return class_parents($object) !== false.
  • @Franz 这不是真的。没有任何父母的班级将返回[],而不是false。
  • 是的。我想!= 可以。
【解决方案2】:

is_subclass_of() 函数完成这项工作:

明智的是,它不仅接受类实例,还接受类名——无需创建对象即可获取信息。

【讨论】:

    猜你喜欢
    • 2013-04-09
    • 1970-01-01
    • 2011-06-09
    • 2021-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多