开发者

PHP Value Object auto create

开发者 https://www.devze.com 2022-12-28 06:01 出处:网络
Assume that I have a class value object defined in php, where each variable in the class is defined. Something like:

Assume that I have a class value object defined in php, where each variable in the class is defined. Something like:

class UserVO {
  public $id;
 开发者_开发技巧 public $name;
}

I now have a function in another class, which is expecting an array ($data).

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

How do I tell php that the $data parameter should be typed as a UserVO? I could then have code completion to do something like:

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

I'm guessing something like the following, but this obviously doesnt work

$my_var = $data as new userVO();


Use type hint or instanceof operator.

type hinting

public function save_user(UserVO $data);

Will throw an error if the given type is not an instanceof UserVO.

instanceof

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

Will throw an InvalidArgumentException (thanks to salathe for pointing me out to this more verbose exception) which you will be able to catch and work with.

By the way, take a look to duck typing


in PHP5 this will work. It's called a type hint.

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

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

0

精彩评论

暂无评论...
验证码 换一张
取 消