Создание объекта из Xml Return and Modification - PullRequest
0 голосов
/ 15 апреля 2011

Допустим, у меня есть класс (упрощенный):

class User
{
    public $firstName;
    public $lastName;
    public $address;
    public $city;
    public $state;
    public $zip;
    public $phoneNumber;
}

теперь допустим, у меня есть XML-возврат, который выглядит следующим образом:

[User] => SimpleXMLElement Object
       (
          [firstName] => foo
          [lastName] => bar              
          [address] => 3111 east 1
          [city] => oneVille
          [state] => Fo
          [zip] => 51155
          [phoneNumber] => 5551112222
        )

Есть ли простой способ создать объект User с таким возвратом, чтобы я мог чем-то изменить значения? Предполагая, что возврат будет соответствовать моему классу пользователя.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 15 апреля 2011

Вы можете настроить конструктор вашего класса User так, чтобы он принимал объект типа SimpleXMLElement и использовал его значение для заполнения вашего пользователя; хотя, если ваши пользовательские объекты не делают ничего, кроме хранения данных, вы на самом деле ничего не получили, имея этот класс в первую очередь:

class User
{
    public $firstName;
    public $lastName;
    public $address;
    public $city;
    public $state;
    public $zip;
    public $phoneNumber;

    public function __construct( SimpleXMLElement $xml )
    {
        $this->firstName = isset( $xml->firstName ) ? $xml->firstName : '';
        ...
        $this->phoneNumber = isset( $xml->phoneNumber ) ? $xml->phoneNumber : '';
    }
}
$user = new User( $your_xml_element_object_here );

Вы также можете использовать цикл foreach Фрэнка для их динамического заполнения, но, вероятно, вы захотите назначить только те поля, которые уже существуют в определении вашего класса.

0 голосов
/ 15 апреля 2011

Грубо:

$userXml = new SimpleXMLElement($xml);
$userObj = new User();
foreach($userXml as $key => $value) {
    $userObj->$key = (string)$value;
}

Я не уверен, что правильно понял интерфейс итераций, но это близко.

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