<?php
class MyClass
{
/**
* A test function
*
* First parameter must be an object of type OtherClass
*/
public function test(OtherClass $otherclass) {
echo $otherclass->var;
}
/**
* Another test function
*
* First parameter must be an array
*/
public function test_array(array $input_array) {
print_r($input_array);
}
/**
* First parameter must be iterator
*/
public function test_interface(Traversable $iterator) {
echo get_class($iterator);
}
/**
* First parameter must be callable
*/
public function test_callable(callable $callback, $data) {
call_user_func($callback, $data);
}
}
// Another example class
class OtherClass {
public $var = 'Hello World';
}
$myclass = new MyClass;
$otherclass = new OtherClass;
$myclass->test($otherclass);
// Works: Prints the array
$myclass->test_array(array('a', 'b', 'c'));
// Works: Prints ArrayObject
$myclass->test_interface(new ArrayObject(array()));
// Works: Prints int(1)
$myclass->test_callable('var_dump', 1);
?>
Hello WorldArray
(
[0] => a
[1] => b
[2] => c
)
ArrayObjectint(1)
Output for 5.2.0 - 5.2.17, 5.3.0 - 5.3.29
Hello WorldArray
(
[0] => a
[1] => b
[2] => c
)
ArrayObject
Catchable fatal error: Argument 1 passed to MyClass::test_callable() must be an instance of callable, string given, called in /in/HvvbM on line 58 and defined in /in/HvvbM on line 35
Process exited with code 255.
Output for 5.1.0 - 5.1.6
Hello WorldArray
(
[0] => a
[1] => b
[2] => c
)
ArrayObject
Fatal error: Argument 1 passed to MyClass::test_callable() must be an object of class callable, called in /in/HvvbM on line 58 and defined in /in/HvvbM on line 35
Process exited with code 255.
Output for 5.0.0 - 5.0.5
Parse error: parse error, unexpected T_ARRAY, expecting '&' or T_VARIABLE in /in/HvvbM on line 21
Process exited with code 255.
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/HvvbM on line 11
Process exited with code 255.
Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/HvvbM on line 11
Process exited with code 255.
Output for 4.3.2 - 4.3.4
Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in /in/HvvbM on line 11
Process exited with code 255.