ReflectionClass::getConstructor

(PHP 5)

ReflectionClass::getConstructorGets the constructor of the class

Description

public ReflectionMethod ReflectionClass::getConstructor ( void )

Gets the constructor of the reflected class.

Parameters

This function has no parameters.

Return Values

A ReflectionMethod object reflecting the class' constructor, or NULL if the class has no constructor.

Examples

Example #1 Basic usage of ReflectionClass::getConstructor()

<?php
$class 
= new ReflectionClass('ReflectionClass');
$constructor $class->getConstructor();
var_dump($constructor);
?>

The above example will output:

object(ReflectionMethod)#2 (2) {
  ["name"]=>
  string(11) "__construct"
  ["class"]=>
  string(15) "ReflectionClass"
}

See Also

Коментарии

Автор:
Just posting some example code for anyone wanting to mess around with this stuff:

<?php

class Say
{
    private 
$what_to_say;
    public function 
__construct($no_default$word "Hello World"$options = array('a''b'))
    {
       
$this->what_to_say $word;
    }
   
    public function 
speak()
    {
        echo 
$this->what_to_say;
    }
}

$class = new ReflectionClass('Say');

$constructor $class->getConstructor();

echo 
$constructor;

/*     OUTPUTS:

Method [ <user, ctor> public method __construct ] {
  @@ /reflect.php 6 - 9

  - Parameters [3] {
    Parameter #0 [ <required> $no_default ]
    Parameter #1 [ <optional> $word = 'Hello World' ]
    Parameter #2 [ <optional> $options = Array ]
  }
}

*/

$parameters $constructor->getParameters();

var_export($parameters);

/*    OUTPUT:

array (
  0 => 
  ReflectionParameter::__set_state(array(
     'name' => 'no_default',
  )),
  1 => 
  ReflectionParameter::__set_state(array(
     'name' => 'word',
  )),
  2 => 
  ReflectionParameter::__set_state(array(
     'name' => 'options',
  )),
)

*/

$nl "\n";
echo 
"$nl\tParameters$nl";
foreach(
$parameters as $param)
{
    echo 
"****** $" $param->name " ******$nl";
    echo 
"Nullable:\t\t" $param->allowsNull() . $nl
         
."Default Value:\t\t";
    echo (
$param->isDefaultValueAvailable()) ? $param->getDefaultValue() : "None";
    echo 
$nl ."Is Array:\t\t";
    echo (
$param->isArray()) ? "Yes" "No";
    echo 
$nl "Optional:\t\t";
    echo (
$param->isOptional()) ? "Yes" "No";
    echo 
$nl;
}

/*    OUTPUT:

    Parameters
****** $no_default ******
Nullable:        1
Default Value:    None
Is Array:        No
Optional:        No
****** $word ******
Nullable:        1
Default Value:    Hello World
Is Array:        No
Optional:        Yes
****** $options ******
Nullable:        1
Default Value:    Array
Is Array:        No
Optional:        Yes

*/

?>

To clarify the possibly confusing behavior of ReflectionParemeter::isArray(), it will return true if the parameter has type hinting:

<?php
...
public function 
__construct($no_default$word "Hello World", array $options = array('a''b'))
...
?>

Calling isArray() will now return true for the $options parameter
2010-07-16 10:47:34
http://php5.kiev.ua/manual/ru/reflectionclass.getconstructor.html
Old constructors also count as contructor:

<?php

class SomeClass {

    function 
SomeClass($some_arg) {
    }

}

$refl = new ReflectionClass('SomeClass');

var_dump($refl->isInstantiable()); // bool(true)

echo $refl->getConstructor();

/* OUTPUT:
Method [ <user, ctor> public method SomeClass ] {
  @@ /var/www/vhosts/api.example.com/httpdocs/testRefl.php 5 - 6

  - Parameters [1] {
    Parameter #0 [ <required> $some_arg ]
  }
}
*/

?>

Some more behavior:

<?php

class SomeClass {

   function 
funcA($arg1$arg2) {

   }

}

$refl = new ReflectionClass('SomeClass');

var_dump($refl->isInstantiable()); // bool(true)

var_dump($refl->getConstructor()); // NULL

/* --------------- */

class AnotherClass {

   private function 
__construct() {
   }

   function 
funcB($arg1$arg2) {

   }

}

$refl = new ReflectionClass('AnotherClass');

var_dump($refl->isInstantiable()); // bool(false)

echo $refl->getConstructor();
/*
Method [ <user, ctor> private method __construct ] {
  @@ /testRefl.php 22 - 23
}
*/

?>

Tested on PHP 5.2.4
2011-05-13 11:13:02
http://php5.kiev.ua/manual/ru/reflectionclass.getconstructor.html

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