Автоматическое создание объекта значений PHP - PullRequest
3 голосов
/ 28 апреля 2010

Предположим, у меня есть объект значения класса, определенный в 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();

Ответы [ 2 ]

7 голосов
/ 28 апреля 2010

Используйте подсказку типа или оператор instanceof .

тип подсказки

public function save_user(UserVO $data);

Выдает ошибку, если данный тип не является экземпляром UserVO.

1012 * InstanceOf *

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

Создает исключение InvalidArgumentException (спасибо salathe за указание на это более подробное исключение), с которым вы сможете работать и работать.

Кстати, взгляните на Утка, набрав

3 голосов
/ 28 апреля 2010

в PHP5 это будет работать. Это называется подсказка типа.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...