我们可以在java中将参数的类型指定为Class
或Class<?>
或Class<SomeClass>
或Class<? extends SomeClass>
。另外,我们知道PHP has added type declaration capability (were also known as type hints in PHP 5)。那么是否可以在PHP中将function
的参数类型声明为Class
(如Java)?
例如(在PHP中):
function f(Class<string> $clazz) { ... } // ???
答案 0 :(得分:2)
正如你所说,这在PHP中被称为type hinting。
PHP文档示例:
<?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);
}
/**
* 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';
}
?>
在你的问题中真正重要的部分是这个函数,其中OtherClass
指定参数必须是OtherClass
的实例,否则,PHP将抛出错误。
<?php
/**
* A test function
*
* First parameter must be an object of type OtherClass
*/
public function test(OtherClass $otherclass) {
echo $otherclass->var;
}
?>