1--TEST--
2ReflectionParameter class - isOptional, isDefaultValueAvailable and getDefaultValue methods.
3--CREDITS--
4Robin Fernandes <robinf@php.net>
5Steve Seear <stevseea@php.net>
6--FILE--
7<?php
8
9class ReflectTestClass {
10    public static function staticMethod($paramOne, $anotherParam = "bob",
11                                        &$thirdParam = "jack", $arrayParam = array('one')) {
12        echo "hello from test\n";
13        echo "third is $thirdParam\n";
14        return ++$theIncrement;
15    }
16
17}
18
19$jane = "jane";
20ReflectTestClass::staticMethod("bob", "jack");
21
22$refMethod = new ReflectionMethod('ReflectTestClass', 'staticMethod');
23$refParameters = $refMethod->getParameters();
24
25echo "parameter names from staticMethod method:\n\n";
26foreach($refParameters as $parameter) {
27	var_dump($parameter);
28	if($parameter->isOptional()) {
29	  echo "this parameter is optional\n";
30	} else {
31	  echo "this parameter is not optional\n";
32	}
33
34	if($parameter->isDefaultValueAvailable()) {
35	  echo "this parameter has a default value\n";
36	} else {
37	  echo "this parameter has no default value\n";
38	}
39
40	/*
41	$val = 0;
42	try {
43		$val = $parameter->getDefaultValue();
44		var_dump($val);
45	} catch (ReflectionException $e) {
46		print $e->getMessage();
47		echo "\n";
48	}
49	*/
50
51	echo "\n";
52}
53
54?>
55--EXPECTF--
56hello from test
57third is jack
58
59Notice: Undefined variable: theIncrement in %s on line 8
60parameter names from staticMethod method:
61
62object(ReflectionParameter)#%d (1) {
63  ["name"]=>
64  string(8) "paramOne"
65}
66this parameter is not optional
67this parameter has no default value
68
69object(ReflectionParameter)#%d (1) {
70  ["name"]=>
71  string(12) "anotherParam"
72}
73this parameter is optional
74this parameter has a default value
75
76object(ReflectionParameter)#%d (1) {
77  ["name"]=>
78  string(10) "thirdParam"
79}
80this parameter is optional
81this parameter has a default value
82
83object(ReflectionParameter)#%d (1) {
84  ["name"]=>
85  string(10) "arrayParam"
86}
87this parameter is optional
88this parameter has a default value
89