PHP 8.4.0 RC4 available for testing

ReflectionParameter Sınıfı

(PHP 5, PHP 7, PHP 8)

Giriş

ReflectionParameter sınıfı işlev veya yöntemin bağımsız değişkenleri hakkında bilgi edinilmesini sağlar.

Bir işlevin bağımsız değişkenlerini incelemek için önce ReflectionFunction veya ReflectionMethod sınıfının bir örneğini oluşturmalı, sonra da bu sınıfların ReflectionFunctionAbstract::getParameters() yöntemini kullanarak bağımsız değişken dizisini almalısınız.

Sınıf Sözdizimi

class ReflectionParameter implements Reflector {
/* Özellikler */
public string $name;
/* Yöntemler */
public __construct(string|array|object $function, int|string $param)
public allowsNull(): bool
private __clone(): void
public static export(string $işlev, string $bağımsız_değişken, bool $ihracet = ?): string
public getAttributes(?string $name = null, int $flags = 0): array
public getName(): string
public getPosition(): int
public hasType(): bool
public isArray(): bool
public isCallable(): bool
public isOptional(): bool
public isPromoted(): bool
public isVariadic(): bool
public __toString(): string
}

Özellikler

name

Bağımsız değişken ismi. Salt-okunur olup yazaöaya çalışılırsa bir ReflectionException yavrular.

Sürüm Bilgisi

Sürüm: Açıklama
8.0.0 ReflectionParameter::export() kaldırıldı.

İçindekiler

add a note

User Contributed Notes 4 notes

up
7
fgm at riff dot org
16 years ago
The note about the signature of the ReflectionParameter constructor is actually incomplete, at least in 5.2.5: it is possible to use an integer for the second parameter, and the constructor will use it to return the n-th parameter.

This allows you to obtain proper ReflectionParameter objects even when documenting code from extensions which (strangely enough) define several parameters with the same name. The string-based constructor always returns the first parameter with the matching name, whereas the integer-based constructor correctly returns the n-th parameter.

So, in short, this works:
<?php
// supposing the extension defined something like:
// Some_Class::someMethod($a, $x, $y, $x, $y)
$p = new ReflectionParameter(array('Some_Class', 'someMethod'), 4);
// returns the last parameter, whereas
$p = new ReflectionParameter(array('Some_Class', 'someMethod'), 'y');
// always returns the first $y at position 2
?>
up
3
killgecNOFSPAM at gmail dot com
17 years ago
Signature of constructor of ReflectionParameter correctly is:

public function __construct(array/string $function, string $name);

where $function is either a name of a global function, or a class/method name pair.
up
1
massimo at mmware dot it
17 years ago
I found these limitations using class ReflectionParameter from ReflectionFunction with INTERNAL FUNCTIONS (eg print_r, str_replace, ... ) :

1. parameter names don't match with manual: (try example 19.35 with arg "call_user_func" )
2. some functions (eg PCRE function, preg_match etc) have EMPTY parameter names
3. calling getDefaultValue on Parameters will result in Exception "Cannot determine default value for internal functions"
up
0
rasmus at mindplay dot dk
1 year ago
There are so many parameter modes now, and I needed to know exactly what `ReflectionParameter` is going to return, so I wrote a little test-script - you can find the script and results in a table here:

https://gist.github.com/mindplay-dk/082458088988e32256a827f9b7491e17
To Top