Навигация по массиву и объектам данных - PullRequest
0 голосов
/ 04 октября 2011

У меня есть объект со ссылкой на свойство.Я получаю это с getLink().Это свойство на самом деле является массивом, поэтому я получаю 1-й элемент $link[0], который, в свою очередь, является объектом, поэтому я получаю свойство getHref().Мой общий код выглядит следующим образом.

$link = $obj->getLink();
$link0 = $link[0];
$href = $link0->getHref();

Есть ли лучший способ написать этот код, как в 1 строке?что-то вроде $obj->getLink()->get(0)->getHref() Я использую PHP 5.3.4

1 Ответ

3 голосов
/ 04 октября 2011
current($obj->getLink())->getHref()

Это не очень элегантно.

Ваш код, вероятно, должен выглядеть следующим образом:

$links = $obj->getLink();
$href  = $links[0]->getHref();

Если getLink всегда возвращает массив, он должен называться getLinks(множественное число), и я ожидаю, что придется перебирать возвращаемое значение;работать только с первым результатом кажется странным.В качестве альтернативы getLink может принять параметр для возврата конкретной ссылки, например:

$href = $obj->getLink(0)->getHref();

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

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