PHP 8.4.0 RC2 available for testing

ReflectionClass::getConstructor

(PHP 5, PHP 7, PHP 8)

ReflectionClass::getConstructorSınıfın kurucusunu döndürür

Açıklama

public ReflectionClass::getConstructor(): ?ReflectionMethod

Sınıf kurucusunu döndürür.

Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

Dönen Değerler

Sınıfın kurucusunu yansıtan ReflectionMethod nesnesi. Sınıfın kurucusu yoksa null döner.

Örnekler

Örnek 1 - ReflectionClass::getConstructor() kullanımı

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

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

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

Ayrıca Bakınız

add a note

User Contributed Notes 3 notes

up
4
martin dot melka at gmail dot com
5 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
14 years ago
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
up
0
jochem at drecomm dot nl
13 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