假设我在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();
答案 0 :(得分:7)
使用type hint或instanceof运营商。
类型提示
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
}