get_class_methods

(PHP 4, PHP 5)

get_class_methods — Возвращает массив имен методов класса

Описание

array get_class_methods ( mixed $class_name )

Функция возвращает массив имен методов определенных для класса class_name .

Замечание: Начиная с PHP 4.0.6, вы можете передать функции объект вместо указания имени класса class_name . К примеру:

<?php
$class_methods 
get_class_methods($my_class); // ниже приведен полный пример
?>

Пример #1 Пример использования get_class_methods()

<?php

class myclass {
    
// конструктор
    
function myclass() 
    {
        return(
true);
    }
    
    
// метод 1
    
function myfunc1() 
    {
        return(
true);
    }

    
// метод 2
    
function myfunc2() 
    {
        return(
true);
    }
}

$my_object = new myclass();

$class_methods get_class_methods(get_class($my_object));

foreach (
$class_methods as $method_name) {
    echo 
"$method_name\n";
}

?>

выведет:

myclass
myfunc1
myfunc2

См. также get_class_vars() и get_object_vars().

Коментарии

Note that this function will answer both class AND instance methods ("class methods" are called "static" in PHP). Sort of a little "trap" for people who have in-depth experience with the OO terminology :-)
2007-02-06 04:40:13
http://php5.kiev.ua/manual/ru/function.get-class-methods.html
It should be noted that the returned methods are dependant on the current scope. See this example:

<?php
class C
{
    private function 
privateMethod()
    {
       
    }
    public function 
publicMethod()
    {
       
    }
    public function 
__construct()
    {
        echo 
'$this:';
       
var_dump(get_class_methods($this));
        echo 
'C (inside class):';
       
var_dump(get_class_methods('C'));
    }
}
$c = new C;
echo 
'$c:';
var_dump(get_class_methods($c));
echo 
'C (outside class):';
var_dump(get_class_methods('C'));
?>

Output:

$this:
array
  0 => string 'privateMethod' (length=13)
  1 => string 'publicMethod' (length=12)
  2 => string '__construct' (length=11)

C (inside class):
array
  0 => string 'privateMethod' (length=13)
  1 => string 'publicMethod' (length=12)
  2 => string '__construct' (length=11)

$c:
array
  0 => string 'publicMethod' (length=12)
  1 => string '__construct' (length=11)

C (outside class):
array
  0 => string 'publicMethod' (length=12)
  1 => string '__construct' (length=11)
2010-01-08 06:40:16
http://php5.kiev.ua/manual/ru/function.get-class-methods.html
I have created a very simple test runner using this function

function get_bar($text) {
    $bar = "";
    for($i=1; $i<=strlen($text); $i++) {
        $bar .= "=";
    }
    return $bar;
}
class Tester {
    function __construct() {
        $this->run_tests();
    }
    // run the tests
    function run_tests() {
        print("Tester by Minhajul Anwar \n");
        $class = get_class($this);
        $test_methods = preg_grep('/^test/', get_class_methods($this));
        foreach($test_methods as $method) {
            $start_rep = "test: $class::$method";
            $bar = get_bar($start_rep);
            print("\n$start_rep\n$bar\n");
            $this->$method();
            print("\n");
        }
    }
}

now you just need to write your test class with tegst methods prefixed by 'test', and then just instantiate object of that test class of your, all those tests methods will get run automatically
The drawback is: your test methods must not accept any arguments

an example:
require '../autoload.php';
register_autoload_paths(realpath('./'));

class Test_Test extends Tester {
    function test_something() {
        print("method got executed");
    }
    function testAnotherThing() {
    print("another test method");
    }
}

$Test = new Test_Test();
2015-11-18 20:09:50
http://php5.kiev.ua/manual/ru/function.get-class-methods.html
It is worth noting that get_class_methods($closure) doesn't return __invoke method even though it exists and is documented too.

See https://3v4l.org/VKjAF
2024-12-12 16:11:30
http://php5.kiev.ua/manual/ru/function.get-class-methods.html

    Поддержать сайт на родительском проекте КГБ