Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP值对象自动创建_Php_Object - Fatal编程技术网

PHP值对象自动创建

PHP值对象自动创建,php,object,Php,Object,假设我在php中定义了一个class value对象,其中定义了类中的每个变量。比如: class UserVO { public $id; public $name; } $something = $data->id; //typed as UserVO.id $else = $data->name; //typed as UserVO.name 我现在在另一个类中有一个函数,它需要一个数组($data) 我如何告诉php$data参数应该被键入为UserVO?然后,我

假设我在php中定义了一个class value对象,其中定义了类中的每个变量。比如:

class UserVO {
  public $id;
  public $name;
}
$something = $data->id; //typed as UserVO.id
$else = $data->name; //typed as UserVO.name
我现在在另一个类中有一个函数,它需要一个数组($data)

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

class UserVO {
  public $id;
  public $name;
}
$something = $data->id; //typed as UserVO.id
$else = $data->name; //typed as UserVO.name
我猜是这样的,但这显然不起作用

$my_var = $data as new userVO();

在PHP5中,这将起作用。这叫做类型提示

function save_user(UserVO  $data) {
//run code to save the user
}
使用或操作人员

类型暗示

public function save_user(UserVO $data);
如果给定类型不是UserVO的实例,则将引发错误

瞬间

public function save_user($data)
{
    if ($data instanceof UserVO)
    {
        // do something
    } else {
       throw new InvalidArgumentException('$data is not a UserVO instance');
    }
}
将抛出一个InvalidArgumentException(感谢salathe为我指出了这个更详细的异常),您将能够捕获并处理该异常


顺便说一句,看看这里的

可能会派上用场,有助于将它与
save\u user
@salath中可能出现的任何其他异常区分开来。你说得对,我根据你的评论编辑了我的答案。