2017-01-24 1 views
0

Я хочу использовать веб-сервис; однако для этого требуется передача данных определенным образом, и я не хочу моделировать классы Laravel на основе веб-службы.Laravel: рекурсивный объект (ы) карты и их дочерние элементы для названных массивов

Что было бы лучшим способом сделать функцию рекурсивного отображения, которая позволяет мне отображать текущий объект и все его дочерние элементы (отношения)?

Например, скажем, у меня есть профиль, и у него может быть много пользователей, и у этих пользователей может быть много адресов. Примечание: пример в JSON, но я хочу выполнить все на PHP.

// Starting Object - This object is equal to $profile below 
{ 
    id: 1, 
    swift_locator: 74, 
    users: 
    [{ 
    id: 1, 
    name: "Random", 
    addresses: 
    [{ 
     id: 1, 
     city: "Here", 
     state: "somewhere" 
    }] 
    }) 
} 

// PHP 
$profile::convertForWebService(); // I need help figuring out what goes on in here 

// Final Object 
{ 
    profileId: 1, 
    SWIFTLocator: 74, 
    parties: 
    [{ 
    partyId: 1, 
    partyName: "Random", 
    addresses: 
    [{ 
     addressId: 1, 
     city: "Here", 
     state: "somewhere" 
    }] 
    }) 
} 

Как я могу сделать функцию, которая вызывает ту же функцию на всех своих детей, если они также имеют эту функцию?

Так $ Профиль :: convertForWebService() видит, что каждое имя в коллекции имеет $ имя A :: convertForWebService() метод и выполняет его и $ Имя :: convertForWebService() видит, что каждый адрес в коллекции есть функция $ address :: convertForWebService() и выполняет ее так, чтобы я мог в конечном итоге с Final Object выше.

ответ

0

Есть много опций доступны, вы можете просто использовать array_map() РНР, чтобы сделать это, или вы можете использовать пакет как http://fractal.thephpleague.com/