<?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;
$foo = new MyClass;
$foo->test($foo);
$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);
?>
Fatal error: Uncaught TypeError: MyClass::test(): Argument #1 ($otherclass) must be of type OtherClass, MyClass given, called in /in/njkk3 on line 47 and defined in /in/njkk3:11
Stack trace:
#0 /in/njkk3(47): MyClass->test(Object(MyClass))
#1 {main}
thrown in /in/njkk3 on line 11
Process exited with code 255.
Fatal error: Uncaught TypeError: Argument 1 passed to MyClass::test() must be an instance of OtherClass, instance of MyClass given, called in /in/njkk3 on line 47 and defined in /in/njkk3:11
Stack trace:
#0 /in/njkk3(47): MyClass->test(Object(MyClass))
#1 {main}
thrown in /in/njkk3 on line 11
Process exited with code 255.
Catchable fatal error: Argument 1 passed to MyClass::test() must be an instance of OtherClass, instance of MyClass given, called in /in/njkk3 on line 47 and defined in /in/njkk3 on line 11
Process exited with code 255.
Catchable fatal error: Argument 1 passed to MyClass::test() must be an instance of OtherClass, instance of MyClass given, called in /in/6lci9 on line 47 and defined in /in/6lci9 on line 11
Process exited with code 255.
Output for 5.1.0 - 5.1.6
Fatal error: Argument 1 passed to MyClass::test() must be an instance of OtherClass, called in /in/6lci9 on line 47 and defined in /in/6lci9 on line 11
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/6lci9 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/6lci9 on line 11
Process exited with code 255.
Output for 4.3.1, 4.3.5 - 4.3.11, 4.4.0 - 4.4.1
Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/6lci9 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/6lci9 on line 11
Process exited with code 255.
Output for 4.3.0
Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/njkk3 on line 11
Process exited with code 255.