例子 19-39. Type Hinting examples
<?php
// An example class
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
);
}
}
// Another example class
class
OtherClass
{
public $var
=
'Hello World'
;
}
?>
|
Failing to satisfy the type hint results in a fatal error.
<?php
// An instance of each class
$myclass
= new
MyClass
;
$otherclass
= new
OtherClass
;
// Fatal Error: Argument 1 must be an object of class OtherClass
$myclass
->
test
(
'hello'
);
// Fatal Error: Argument 1 must be an instance of OtherClass
$foo
= new
stdClass
;
$myclass
->
test
(
$foo
);
// Fatal Error: Argument 1 must not be null
$myclass
->
test
(
null
);
// Works: Prints Hello World
$myclass
->
test
(
$otherclass
);
// Fatal Error: Argument 1 must be an array
$myclass
->
test_array
(
'a string'
);
// Works: Prints the array
$myclass
->
test_array
(array(
'a'
,
'b'
,
'c'
));
?>
|
Type hinting also works with functions:
<?php
// An example class
class
MyClass
{
public $var
=
'Hello World'
;
}
/**
* A test function
*
* First parameter must be an object of type MyClass
*/
function
MyFunction
(
MyClass $foo
) {
echo
$foo
->
var
;
}
// Works
$myclass
= new
MyClass
;
MyFunction
(
$myclass
);
?>
|