In some of my recent code I found it desirable to obtain class hierarchy info without having to create a class instance. I just made this and it was the first time I have really looked at the php src, hope it dosent break anything ;)
<?
class A {
var $a = 0;
function A($a = 0) {
$this->a = $a;
}
}
class B extends A {
}
$a =& new A;
$b =& new B;
function test($x, $y) {
$tfs = (is_subclass_of($x,$y))?"true":"false";
$tfa = (is_a($x,$y))?"true":"false";
if(is_object($x)) {
$a = "<strong>obj:".get_class($x)."</strong>";
} else {
$a = "<strong>str:$x</strong>";
}
if(is_object($y)) {
$b = "<strong>obj:".get_class($y)."</strong>";
} else {
$b = "<strong>str:$y</strong>";
}
echo $a." is_subclass_of ".$b.": ".$tfs."<br>\n".$a." is_a ".$b.":
".$tfa."<br><br>\n";
}
test($a, "A");
test($a, $a);
test("A", $a);
test("A", "A");
test($b, "A");
test($b, $a);
test("B", $a);
test("B", "B");
?>
Produces:
obj:a is_subclass_of str:A: false
obj:a is_a str:A: true
obj:a is_subclass_of obj:a: false
obj:a is_a obj:a: true
str:A is_subclass_of obj:a: false
str:A is_a obj:a: true
str:A is_subclass_of str:A: false
str:A is_a str:A: true
obj:b is_subclass_of str:A: true
obj:b is_a str:A: true
obj:b is_subclass_of obj:a: true
obj:b is_a obj:a: true
str:B is_subclass_of obj:a: true
str:B is_a obj:a: true
str:B is_subclass_of str:B: false
str:B is_a str:B: true
Rodric Glaser
Senior Programmer/Analyst
rglaser -at- propertyline -dot- com
is_a_impl-objstr.diff.gz
Description: GNU Zip compressed data
-- PHP Development Mailing List <http://www.php.net/> To unsubscribe, visit: http://www.php.net/unsub.php
