transkontrol писал(а): ↑10.08.2009 14:25
Это "очень принципиально"! Объект и список объектов - это разные вещи: целое и массив целых.
В объектно-ориентированном проектировании хорошо известен паттерн "Composite" (или, по-русски, "Компоновщик"), задача которого - обеспечить унифицированную работу с целым и массивом целых на уровне интерфейса. Настоятельно рекомендуется к использованию, ибо сильно упрощает жизнь (хотя панацеей, как и все остальное, не является). Технические различия между целым и массивом целых в данном случае роли не играют - см. "инкапсуляция".
Эти запросы всегда возвращают объекты, "указатели на результат", которые в свою очередь могут быть пустыми. Не так ли?
Если говорить конкретно про ADO.NET, то он возвращает банальный Object, ибо скаляр, возвращенный SELECT, может быть любого типа. Или null, если SELECT не вернул ничего. Конкретно в .NET для упрощения интеграции с базами данных придуманы даже nullable-типы. Нет, я не фанат ADO.NET и ничего давно на нем не писал - просто пришлось к слову

В других API это может быть реализовано как-то по-другому.
угу, запросить список и получить опять же список, но не конкретный объект. Что-то не совсем понял мысль про исключение, если некорректный $mydocuments. Прошу пояснить
Например, в промежутке между созданием $mydocuments В программе и вызовом getDocumentListEntry() у меня пропала связь с сервером Google. Объект формально есть, но он стал внутренне некорректен. В таком случае я морально готов получить исключение. Опять же, я морально готов получить исключение при запросе элемента по id (т.е. прямо URL), но не при поисковом запросе. Зачем было объединять метод, выполняющий запрос и метод, возвращающий один конкретный результат, я не знаю - но ноги у проблемы, имхо, растут отсюда.
Что в таком случае вернёт $doc->title ?
Вы не поверите... Оно выкинет исключение!

Причем в полном соответствии с его назначением: при нормальном течении программы null разыменовываться не должен.
Зачем мне лишние телодвижения, если я знаю, что возвращается то, что я запросил?
"Самоуверенность в программировании ведет к провалу" (кажется, Триджелл или Эллисон). Запрос на поиск чего-то от требования выдать что-то уникально заданное отличается как раз тем, что может не вернуть ничего (или вернуть много всего) - и это нормально.
А если что-то пошло не так, то и обрабатываться возникшая ситуация будет, там где это нужно.
Такой подход хорошо работает в Java и других языках с checked expections (если вспомнить, что API GData изначально разрабатывался для них, надо признать, что смысл в этом есть). В других же языках, как показывает практика, они не будут обрабатываться нигде (при этом проверку на null народ почему-то не забывает). Впрочем, к нашему вопросу это имеет мало отношения.
ИМХО, рассматривать работу с ГуглоДоком надо просто как работу с хранилищем, без привязки к тому, БД это, ФС, либо что-то ещё. И снова, поиск возвращает список, набор, перечисление найденных объектов. А стандартная fopen растёт далеко не из PHP5
Тут вы опять же правы. Но если рассматривать его как вещь в себе, то понятия "удивительно", "удобно" и т.п. неприменимы - они обретают смысл только в контексте остального мира.