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

search for in the

property_exists> <is_subclass_of
Last updated: Fri, 13 Nov 2009

view this page in

method_exists

(PHP 4, PHP 5)

method_existsBir sınıf yöntemi mevcut mu diye bakar

Açıklama

bool method_exists ( mixed $sınıf , string $yöntem )

Belirtilen sınıf sınıfının belirtilen yöntem yöntemine sahip olup olmadığına bakar.

Değiştirgeler

sınıf

Sınanacak nesne veya sınıfın ismi.

yöntem

Aranacak yöntemin ismi.

Dönen Değerler

Belirtilen sınıf sınıfı, belirtilen yöntem yöntemine sahipse TRUE, değilse FALSE döner.

Örnekler

Örnek 1 - method_exists() örneği

<?php
$directory 
= new Directory('.');
var_dump(method_exists($directory,'read'));
?>

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

bool(true)

Örnek 2 - Duruk method_exists() örneği

<?php
var_dump
(method_exists('Directory','read'));
?>

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

bool(true)

Ayrıca Bakınız

  • function_exists() - Eğer işlev tanımlanmış ise TRUE döndürür
  • is_callable() - Bir değişkenin içeriğinin bir işlev olarak çağrılabilirliğini doğrular



property_exists> <is_subclass_of
Last updated: Fri, 13 Nov 2009
 
add a note add a note User Contributed Notes
method_exists
admin ( at ) djokodonev dot com
16-Oct-2009 11:30
Hi,

Here is a useful function that  you can use to check classes methods access e.g whether it is public, private or static or both..

here it goes:

<?php
// Example class
class myClass {

    private
$private1;
   
    static
$static1;
   
    public
$public1;
       
   
    public function
publ() {
   
    }
   
    private function
priv() {
   
    }
   
    private static function
privstatic() {

    }
   
    public static function
publstatic() {
   
    }
   
    static function
mytest() {
   
    }
}

// The function uses the reflection class that is built into PHP!!!
// The purpose is to determine the type of a certain method that exi
function is_class_method($type="public", $method, $class) {
  
// $type = mb_strtolower($type);
   
$refl = new ReflectionMethod($class, $method);
    switch(
$type) {
        case
"static":
        return
$refl->isStatic();
        break;
        case
"public":
        return
$refl->isPublic();
        break;
        case
"private":
        return
$refl->isPrivate();
        break;
    }
}
var_dump(is_class_method("static", "privstatic", "myClass")); // true - the method is  private and also static..
var_dump(is_class_method("private", "privstatic", "myClass")); // true - the method is  private and also static..
var_dump(is_class_method("private", "publstatic", "myClass")); // False the methos is public and also static not private
 // you get the idea.. I hope this helps someone..
?>
florin from syneto net
07-Oct-2009 02:34
This function is case-insensitive (as is PHP) and here is the proof:
<?php
class A {
    public function
FUNC() { echo '*****'; }
}

$a = new A();
$a->func(); // *****
var_dump(method_exists($a, 'func')); // bool(true)
?>
jp at function dot fi
30-Apr-2006 09:29
As mentioned before, is_callable and method_exists report all methods callable even if they are private/protected and thus actually not callable. So instead of those functions you may use following work-around which reports methods as supposed to.

<?php
class Foo1 {
  public function
bar() {
    echo
"I'm private Foo1::bar()";
  }
}

class
Foo2 {
  private function
bar() {
    echo
"I'm public Foo2::bar()";
  }
}

$f1=new Foo1;
$f2=new Foo2;

if(
is_callable(array($f1,"bar"))) {
    echo
"Foo1::bar() is callable";
} else {
    echo
"Foo1::bar() isn't callable";
}
if(
is_callable(array($f2,"bar"))) {
    echo
"Foo2::bar() is callable";
} else {
    echo
"Foo2::bar() isn't callable";
}
if(
in_array("bar",get_class_methods($f1))) {
    echo
"Foo1::bar() is callable";
} else {
    echo
"Foo1::bar() isn't callable";
}
if(
in_array("bar",get_class_methods($f2))) {
    echo
"Foo2::bar() is callable";
} else {
    echo
"Foo2::bar() isn't callable";
}

?>

output
Foo1::bar() is callable (correct)
Foo2::bar() is callable (incorrect)
Foo1::bar() is callable (correct)
Foo2::bar() isn't callable (correct)

?>
seufert at gmail dot com
27-Apr-2006 01:27
Just a note that the behaviour of this function changed between version 5.0.x and 5.1.x when using static member functions

Using this code:
<?php
class a {
    static function
test() {return "A";}
}
if(
method_exists('a','test'))
    print
call_user_func(array('a','test'));
else
    print
"Nothing";
?>
PHP 5.1.x returns "A"
PHP 5.0.x returns "Nothing"

Im not sure of a workaround for PHP 5.0.x yet.
spam at majiclab dot com
31-Jan-2006 04:33
Both method_exists() and is_callable() return private and protected functions, which, as mentioned below, causes problems for PHP5/OO programming.  You can use get_class_methods() with either an $instance of a class or the 'ClassName' to get only public functions.
daniel at softel dot jp
10-Jan-2006 03:34
Note that in PHP5, method_exists() will sucessfully find *private* methods. This has some OO/data-hiding ramifications.
jpgiot at nospam ifrance.com
06-May-2004 02:42
a little difference :

to find a method of an object (instance of a class)

<?php
if (method_exists($myinstance,'themethod'))
    echo
'ok';
?>

to find a method of a class (using the class name, not the instance of the class!)

<?php
if (is_callable(array('theclassname','themethod')))
    echo
'ok';
?>
Thomas@ThBeckmann
31-Jan-2003 09:47
Though, as Bejamin noted, it's not possible to use the class name in method_exists within the class definition, get_class_methods delivers the method names for a given class name even inside the class. Thus another workaround for the mentioned problem is to use in_array(<method_name>, get_class_methods(<class_name>))
benjamin_ansbach at web dot de
27-Dec-2002 08:49
if you want to check for a method "inside" of a class use:

method_exists($this, 'function_name')

i was a bit confused 'cause i thought i'm only able to check for a method when i got an object like $object_name = new class_name() with:

method_exists($object_name, 'method_name')

small example for those who didn't understood what i mean ( maybe caused by bad english :) ):

<?php

class a {

    function
a() {
       
        if(
method_exists($this, 'test'))
            echo
'a::test() exists!';
        else
            echo
'a::test() doesn\'t exists';

    }

   
    function
test() {
       
        return
true;
   
    }

}

$b = new a();

?>

the output will be: a::test() exists!

maybe this will help someone
j dot metzger at steptown dot com
16-Jan-2002 11:42
call_user_method uses the same mechanism as a normal method call. So you can get the returned values as well in this way.

$pagetext=call_user_method($method,$object_call);

All information is then in $pagetext.

property_exists> <is_subclass_of
Last updated: Fri, 13 Nov 2009
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites