假设我在php中定义了一个类值对象,其中定义了类中的每个变量.就像是:
class UserVO {
public $id;
public $name;
}
Run Code Online (Sandbox Code Playgroud)
我现在在另一个类中有一个函数,它期望一个数组($ data).
function save_user($data) {
//run code to save the user
}
Run Code Online (Sandbox Code Playgroud)
我怎么告诉php $ data参数应该输入UserVO?然后我可以完成代码完成以下操作:
$something = $data->id; //typed as UserVO.id
$else = $data->name; //typed as UserVO.name
Run Code Online (Sandbox Code Playgroud)
我猜这样的东西,但这显然不起作用
$my_var = $data as new userVO();
Run Code Online (Sandbox Code Playgroud)
使用类型提示或instanceof运算符.
提示
public function save_user(UserVO $data);
Run Code Online (Sandbox Code Playgroud)
如果给定类型不是UserVO的实例,则会抛出错误.
的instanceof
public function save_user($data)
{
if ($data instanceof UserVO)
{
// do something
} else {
throw new InvalidArgumentException('$data is not a UserVO instance');
}
}
Run Code Online (Sandbox Code Playgroud)
将抛出一个InvalidArgumentException(感谢salathe指出我这个更详细的异常),你将能够捕获并使用它.
顺便说一句,看看鸭子打字