PHP:将参数的类型声明为Class(如Java)

时间:2018-02-25 20:57:36

标签: php function class type-hinting type-declaration

我们可以在java中将参数的类型指定为ClassClass<?>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) { ... }  // ???

1 个答案:

答案 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;
    }
?>