Is there a way in PHP to know if one class inherits another?
class Controller
{
}
class HomeController extends Controller
{
}
class Dummy
{
}
// What I would like to do
$result = class_extends('HomeController', 'Controll开发者_开发问答er'); /// true
$result = class_extends('Dummy', 'Controller'); /// false
You need to use instanceof.
Note that implements
is incorrect. instanceof
should be used in both cases (checking whether an object is an inherited class, or whether the object implements an interface).
Example from manual:
<?php
interface MyInterface
{
}
class MyClass implements MyInterface
{
}
$a = new MyClass;
var_dump($a instanceof MyClass);
var_dump($a instanceof MyInterface);
?>
gives:
bool(true)
bool(true)
Yes, you can use
if ($foo instanceof ClassName)
// do stuff...
EDIT: As far as I know, this should even work for interfaces...
May I recomment the instanceof
operator?
class A { }
class B extends A { }
class C { }
$b = new B;
$c = new C;
var_dump($b instanceof A, $c instanceof A) // bool(true), bool(false)
精彩评论