PHP值对象自动创建

时间:2010-04-28 12:50:10

标签: php object

假设我在php中定义了一个类值对象,其中定义了类中的每个变量。类似的东西:

class UserVO {
  public $id;
  public $name;
}

我现在在另一个类中有一个函数,它正在期待一个数组($ data)。

function save_user($data) {
//run code to save the user
}

如何告诉php $ data参数应该输入为UserVO?然后我可以完成代码完成以下操作:

$something = $data->id; //typed as UserVO.id
$else = $data->name; //typed as UserVO.name

我猜的是以下内容,但这显然不起作用

$my_var = $data as new userVO();

2 个答案:

答案 0 :(得分:7)

使用type hintinstanceof运营商。

类型提示

public function save_user(UserVO $data);

如果给定类型不是UserVO的实例,则会抛出错误。

的instanceof

public function save_user($data)
{
    if ($data instanceof UserVO)
    {
        // do something
    } else {
       throw new InvalidArgumentException('$data is not a UserVO instance');
    }
}

将抛出一个InvalidArgumentException(感谢salathe指出我更详细的异常),你将能够捕获并使用它。

顺便说一句,看看duck typing

答案 1 :(得分:3)

在PHP5中这将起作用。它被称为类型提示。

function save_user(UserVO  $data) {
//run code to save the user
}

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