ReflectionClass::getConstructor

(PHP 5, PHP 7, PHP 8)

ReflectionClass::getConstructorВозвращает конструктор класса

Описание

public ReflectionClass::getConstructor(): ?ReflectionMethod

Возвращает конструктор отражённого класса.

Список параметров

У этой функции нет параметров.

Возвращаемые значения

Объект ReflectionMethod, отражающий конструктор класса, или null если у класса нет конструктора.

Примеры

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

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

Результат выполнения приведённого примера:

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

Смотрите также

Добавить

Примечания пользователей 3 notes

up
4
martin dot melka at gmail dot com
6 years ago
This method will return the parent's constructor, if the current class does not override it.NULL will only be returned when the class has no constructor AND none of its parents have a constructor either.
up
7
Rob McVey
15 years ago
Just posting some example code for anyone wanting to mess around with this stuff:<?phpclass 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:        1Default Value:    NoneIs Array:        NoOptional:        No****** $word ******Nullable:        1Default Value:    Hello WorldIs Array:        NoOptional:        Yes****** $options ******Nullable:        1Default Value:    ArrayIs Array:        NoOptional:        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
up
0
jochem at drecomm dot nl
14 years ago
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
To Top