• Как правильно спроектировать протокол обмена данными между клиентом и веб-сервисом?

    vanxant
    @vanxant
    Во-первых, забудьте про XML, его придумали бюрократы. Вот пусть они его и используют в своих банках и налоговых. Для парсинга и кодирования JSON достаточно пары функций по 10 строк каждая. Для парсинга XML, даже если в нем пару значений, нужно подгружать монструозные библиотеки.

    Во-вторых, раз уж вы делаете веб-приложение, используйте возможности протокола HTTP. Это значит идеология REST, а не RPC. То есть вместо каких-то там «процедур» или «функций», вы пляшете от объектов и стандартных действий.
    Например, у вас есть объект с идентификатором obj_id. Для любого доступа к нему используется URL вида

    example.com/path/to/obj_id

    Далее по этому URL-у возможны 4 действия (http verb):
    GET example.com/path/to/obj_id — получить данные объекта
    PUT example.com/path/to/obj_id — изменить объект
    DELETE example.com/path/to/obj_id — удалить объект
    POST example.com/path/to/ — создать новый объект в папке /path/to
    GET example.com/path/to/ — получить все объекты в папке /path/to

    В зависимости от результата операции, вы должны возвращать правильные коды ошибок (200 OK, 404 Not Found, 403 Forbidden и т.п.).

    Параметры более сложных запросов идут как get-параметры, ну например
    GET example.com/path/to/?search=blabla
    — искать объекты
    Или можно часть параметров перенести в урл:
    GET example.com/my/report/01.01.2011-31.12.2011/
    Ответ написан
    4 комментария
  • Различия между классом и объектом?

    Weageoo
    @Weageoo
    Класс = срособ организации полей, методов и пр. = инкапсулированный «кусок» функциональности, описание структуры будущих объектов + своё пространство имён внутри.

    Статическая составляющая класса — static-методы и static-поля — это логический способ организации функциональности, общей для любого объекта выделенной сущности. Тут значение имеет логическая составяющая — например, статический метод Parse есть и в классе int, и в классе Guid — но его функциональность различна и соответствует выделенной сущности. Для static-составляющей класса, в принципе, его можно воспринимать как пространство имён. Но пространсто имён нельзя инициализировать, нельзя создать объект пространства имён.

    Объект = экземпляр класса = объект, типом которого является какой-то класс = класс после инициализации = сущность в памяти, обладающая поведением, способная изменять своё состояние.
    Ответ написан
    Комментировать
  • Различия между классом и объектом?

    homm
    @homm
    Может быть вам легче будет понять, если вы будете думать о классе как о наборе функций, а об объекте как о наборе данных.

    Некоторые функции в классе могут быть использованы только с набором данных (т.е. объектом), который передается неявно, когда вы указываете $object->method().

    Другие функции не требуют объекта, поэтому могут быть вызваны напрямую из класса.

    С этой точки зрения очень логично выглядит Python, где у любого метода есть явный аргумент self, указывающий на объект, из которого был вызван метод. А запись object.method(5) является краткой записью ObjectClass.method(object, 5).
    Ответ написан
    1 комментарий
  • Различия между классом и объектом?

    Класс — чертеж, объект класса — машина, собранная по этому чертежу.

    Статический метод — это некое устройство (пусть в нашем случае будет GPS-навигатор), которое поставляется вместе с чертежом и представлено в каждой машине, построенной по этому чертежу. Устройство это никак не задействует машину, и работает само по себе.

    Вы можете бегать с GPS навигатором не построив машины.

    Если отойти от популярного изложения, то статические методы не связываются с экземплярами классов. И могут быть вызваны независимо от того создан экземпляр класса или нет.
    Ответ написан
    2 комментария
  • Почему ведра на пожарных щитах делают конической формы?

    Люки делают круглыми чтобы они не проваливались в канализационные отверстия

    Насчет ведер достаточно полно ответил xinn
    Ответ написан
    6 комментариев
  • Почему ведра на пожарных щитах делают конической формы?

    @Fil
    Чтобы на пожаре не останавливались перекурить, сидя на перевернутых ведрах :)
    Ответ написан
    Комментировать