downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

method_exists> <is_a
[edit] Last updated: Fri, 23 Mar 2012

view this page in

is_subclass_of

(PHP 4, PHP 5)

is_subclass_ofBelirtilen sınıfın belirtilen nesnenin ebeveynlerinden biri olup olmadığına bakar

Açıklama

bool is_subclass_of ( mixed $nesne , string $sınıf )

Belirtilen sınıf sınıfının, belirtilen nesne nesnesinin ebeveynlerinden biri olup olmadığına bakar.

Değiştirgeler

nesne

Çocuk sınıf veya nesne ismi.

sınıf

Olası ebeveynin ismi.

Dönen Değerler

nesne nesnesi sınıf sınıfının alt sınıflarından birinin nesnesi ise TRUE değilse FALSE döner.

Sürüm Bilgisi

Sürüm: Açıklama
5.0.3 nesne değiştirgesinde artık bir dizge (sınıfın ismi) belirtilebiliyor.

Örnekler

Örnek 1 - is_subclass_of() örneği

<?php
// bir sınıf tanımlayalım
class EdevatFabrikası
{
  var 
$oink 'moo';
}

// Bir alt sınıf tanımlayalım
class MakineAtölyesi extends EdevatFabrikası
{
  var 
$oink 'oink';
}

// Yeni bir nesne oluşturalım
$EF = new EdevatFabrikası();
$MA = new MakineAtölyesi();

if (
is_subclass_of($MA'EdevatFabrikası')) {
  echo 
"Evet, \$MA EdevatFabrikası'nın bir alt sınıfıdır\n";
} else {
  echo 
"Hayır, \$MA EdevatFabrikası'nın bir alt sınıfı değildir\n";
}


if (
is_subclass_of($EF'MakineAtölyesi')) {
  echo 
"Evet, \$EF MakineAtölyesi'nin bir alt sınıfıdır\n";
} else {
  echo 
"Hayır, \$EF MakineAtölyesi'nin bir alt sınıfı değildir\n";
}


// PHP 5.0.3'ten itibaren
if (is_subclass_of('MakineAtölyesi''EdevatFabrikası')) {
  echo 
"Evet, MakineAtölyesi EdevatFabrikası'nın bir alt sınıfıdır\n";
} else {
  echo 
"Hayır, MakineAtölyesi EdevatFabrikası'nın bir alt sınıfı değildir\n";
}
?>

Yukarıdaki örneğin çıktısı:

Evet, $MA EdevatFabrikası'nın bir alt sınıfıdır
Hayır, $EF MakineAtölyesi'nin bir alt sınıfı değildir
Evet, MakineAtölyesi EdevatFabrikası'nın bir alt sınıfıdır

Ayrıca Bakınız

  • get_class() - Bir nesnenin ait olduğu sınıfın ismini döndürür
  • get_parent_class() - Nesne veya sınıfın ebeveyn sınıfının ismini döndürür
  • is_a() - Nesne ile sınıf arasında ebeveyn/çocuk ilişkisi var mı diye bakar



method_exists> <is_a
[edit] Last updated: Fri, 23 Mar 2012
 
add a note add a note User Contributed Notes is_subclass_of
nicholas at aquarionics dot com 17-Mar-2009 01:02
This might be useful to someone, so:

If you're using Autoload, you should be aware that this will attempt to autoload $classname if it isn't already loaded. I discovered this when I had something using is_subclass_of inside an error thrown by autoload, which then recursed until it ran out of memory.
Damien Bezborodov 16-Mar-2009 04:55
If you need something similar to is_subclass_of() to determine if a class implements an interface before instantiating it, use reflection:

<?php

interface A_Interface {}
class
A implements A_Interface {}

$reflectionA = new ReflectionClass('A');
var_dump(
   
$reflectionA->implementsInterface('A_Interface')
);

?>
bool(true)
kostyl_kostyl gav-gav mail point ru 07-Mar-2009 03:08
<?php
interface I {
}
class
A implements I {
}
class
B extends {
}
if (
is_subclass_of('A', 'I')) {
    echo
'good<br>';
}
else {
    echo
'bad<br>';
}
if (
is_subclass_of('B', 'I')) {
    echo
'good<br>';
}
else {
    echo
'bad<br>';
}
if (
is_subclass_of('B', 'A')) {
    echo
'good<br>';
}
else {
    echo
'bad<br>';
}
?>

result:
bad <- you must to describe intermediate class B to be good
good
good
jm 30-Sep-2008 08:02
It would appear that is_subclass_of is case insensitive unlike get_class in php5.
i.e.

<?php
class fooBar {}
class
bar extends fooBar {}

assert(get_class(new fooBar()) == "fooBar");
assert(is_subclass_of(new bar(), "foobar") == true);
?>

i run across this while migrating some code from php4 to php5 and the code would only half-the-time break.
Ondra Zizka 13-Oct-2006 05:31
For PHP4:

<?php
/** Returns whether specified class is subclass of the other class. */
function is_subclass($sClass, $sExpectedParentClass){
    do if(
$sExpectedParentClass === $sClass ) return true;
    while(
false != ($sClass = get_parent_class($sClass)) );
    return
false;
}
// Test:
class A {} class B extends A {} class C extends B {} echo (int) is_subclass('C', 'A');
?>
gunniboyh at web dot de 20-May-2006 06:16
is_subclass_of() works also with classes between the class of obj and the superclass.

example:
<?php
class A {};
class
B extends A {};
class
C extends B {};

$foo=new C();
echo ((
is_subclass_of($foo,'A')) ? 'true' : 'false');
?>

echoes 'true' .
01-Oct-2005 06:32
this function does not check interfaces, unlike instanceof operator.
youcantryreachingme at REMOVEME dot hotmail dot com 21-Mar-2005 06:15
A bug report at http://pear.php.net/bugs/bug.php?id=2975 indicates that the "is_subclass_of" function can return the error message:

Warning: Unknown class passed as parameter

in the event that the class represented by the second argument hasn't yet been instantiated.

 
show source | credits | stats | sitemap | contact | advertising | mirror sites