0

我想指定可以赋予函数的数据类型。

在此演示代码(作为示例)中,我想指定给"__construct()"函数的参数的数据类型,以便它只INT需要$id和的Objects类型"example2"$some_object

你知道我怎么能做到这一点吗?

<?php

    class example1{

        private $id;
        private $example2;
        function __construct($id,$some_object){
            $this->id = $id;
            $this->object = $some_object;
        }

        function do_something(){
            $this->example2->moep(); 
        }

    }
    class example2{
        public function moep(){
            print("MOEP!!!");
        }
    }
?>
4

4 回答 4

1

你有类型提示: http: //php.net/manual/en/language.oop5.typehinting.php

但是,引用手册:

类型提示不能用于标量类型,例如 int 或 string。
特征也是不允许的。

于 2012-11-05T14:55:54.747 回答
1

是和不是。

PHP5 中有一些类型提示,但它不允许标量类型。所以对于intand没有string,但对于其他几乎所有东西都是肯定的(包括array,奇怪的是)。

见: http: //php.net/manual/en/language.oop5.typehinting.php

于 2012-11-05T14:56:06.987 回答
0

在 php 中,您只能键入提示对象(和数组)。您不能输入提示标量:

http://php.net/manual/en/language.oop5.typehinting.php

于 2012-11-05T14:56:02.853 回答
0

检查构造函数中的类型并在需要时抛出异常:

function __construct($id,$some_object){
    if (!is_int($id)) throw new UnexpectedValueException("Argument 1 must be an integer");
    if (!is_object($some_object)) throw new UnexpectedValueException("Argument 2 must be an instance of any object");

    $this->id = $id;
    $this->object = $some_object;
}
于 2012-11-05T15:23:49.020 回答