检查 class 是否在 PHP 中扩展了不同的 class

Check if a class extends a different class in PHP

我大约有这个 PHP 代码:

class DatabaseItem
{
  private const CLASS_NAMES = null;
  public function doStuff()
  {
    if ($this::CLASS_NAMES['property'] instanceof self)
    {
      //Construct the Profile Picture object and save it into the property of the $user instance
    }
  }
}

class ProfilePicture extends DatabaseItem { /* Unimportant stuff */ }

class User extends DatabaseItem
{
  protected const CLASS_NAMES = array('property' => ProfilePicture);

  protected $profilePic;
}

$user = new User();
$user->doStuff();

我知道这段代码看起来很不合逻辑,但我不得不大大简化它。不管怎样,问题是,条件 ($this::CLASS_NAMES['property'] instanceof self) 的计算结果总是为假。有没有办法检查 class(不是它的实例)是否扩展或实现了不同的 class/interface?

使用is_subclass_of()函数。

if (is_subclass_of(self::CLASS_NAMES['property'], get_class($this)))

我尝试了你的建议,对我有用的东西正在改变

protected const CLASS_NAMES = array('property' => ProfilePicture);

protected const CLASS_NAMES = array('property' => ProfilePicture::class);

然后改变

if ($this::CLASS_NAMES['property'] instanceof self)

if (is_subclass_of($this::CLASS_NAMES['property'], __CLASS__))

所以我一次性使用了你所有的答案。非常感谢您的帮助。

P.S。我不确定我是否应该在评论中 post 这个,但我认为结论应该清晰可见。