PHP值对象自动创建

Jon*_*noB 3 php object

假设我在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)

Bor*_*éry 7

使用类型提示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指出我这个更详细的异常),你将能够捕获并使用它.

顺便说一句,看看鸭子打字