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

search for in the

ReflectionClass::isInstantiable> <ReflectionClass::isFinal
[edit] Last updated: Fri, 23 Mar 2012

view this page in

ReflectionClass::isInstance

(PHP 5)

ReflectionClass::isInstanceSınıf bir nesne örneği mi diye bakar

Açıklama

public bool ReflectionClass::isInstance ( string $nesne )

Sınıf bir nesne örneği ise TRUE döner.

Değiştirgeler

nesne

Bakılacak nesne.

Dönen Değerler

Başarı durumunda TRUE, başarısızlık durumunda FALSE döner.

Örnekler

Örnek 1 - ReflectionClass::isInstance() örneği

<?php
// Kullanım örneği
$class = new ReflectionClass('Foo');

if (
$class->isInstance($arg)) {
    echo 
"Yes";
}

// Buna eşdeğer
if ($arg instanceof Foo) {
    echo 
"Yes";
}

// Buna da
if (is_a($arg'Foo')) {
    echo 
"Yes";
}
?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

Yes
Yes
Yes

Ayrıca Bakınız



add a note add a note User Contributed Notes ReflectionClass::isInstance
Peter Kruithof 12-Jul-2010 06:21
This function has a flaw in PHP versions < 5.3.* (my tested version was 5.3.2), in which class inheritance is not handled properly. The following test case renders true in 5.3.2, but false on 5.2.9:

<?php
class A {
}

class
B extends A {
    public function
foo(A $a) {
    }
}

$b = new B();

$class = new ReflectionClass('B');
$method = $class->getMethod('foo');
$parameters = $method->getParameters();
$param = $parameters[0];
$class = $param->getClass();

var_dump($class->isInstance($b));
?>

If you're running a PHP version lower than 5.3, my suggestion is to use the following fix:

<?php
[...]

$param = $parameters[0];
$class = $param->getClass();
$classname = $class->getName();

var_dump($b instanceof $classname);
?>

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