Доброе время суток всем зашедшим. Изучая 1 проект наткнулся на интересное использование методов - очень наглядно и красиво.. но читая маны я такого нигде не встречал итак вот это использование Код (PHP): $obj= new myClass(); $obj->getProperties()->setCreator("создатель") ->setLastModifiedBy("создатель") ->setTitle("Заголовок документа") ->setCategory("Разное"); начал изучать класс - и нахожу что все это обычные функции без всяких заморочек ... может я что конечно упускаю. вот пример нескольких функций Код (PHP): class myClass { private $_properties; public function getProperties() { return $this->_properties; } } возможно это важно но функции разбросаны по разным файлам Код (PHP): class myClass_DocumentProperties //когда писал специально проверил extends отуствует { private $_created; private $_lastModifiedBy; public function setCreator($pValue = '') { $this->_creator = $pValue; return $this; } public function setLastModifiedBy($pValue = '') { $this->_lastModifiedBy = $pValue; return $this; } } находил функцию автозагрузки классов .. там все стандартно составить путь к файлу - и загрузить класс. Так вот кто может ссылку дать на какоето чтиво или как называется такой стиль написания или объяснить что и как это делается.. если я правильно понимаю - вызови функцию не по порядку - будет ошибка.. заранее спасибо
о пасиб то что нужно =) Добавлено спустя 16 минут 19 секунд: теперь надо придумать как их сделать зависимыми - ну например .. чтобы сделать банальную строку select * from table where id =10 это просто что первое в голову пришло $sql = new SQlclass; $sql->Select(id,name,value) ->from (table) ->where (id,10); теперь то что я имею ввиду - вызвать from без select не имеет ни какого смысла - вот это как то надо описать не ужели ифами в каждой функции.
Посмотри исходники вот этого http://doctrine-orm.readthedocs.org/en/latest/reference/que ... pi-methods Или используй в своём проекте готовое.
Вообще, в том-то и прелесть кверибилдеров, что их методы вызываются в произвольном порядке. У меня бывает что один запрос строится в совершенно разных местах проги, и вполне может получится, что order_by будет вызван раньше какого-нибудь where. Вся суть сводится к тому, что querybuilder склеивает запрос прямо перед выполнением, когда у него есть уже все данные, чтоб его сформировать. До этого все данные, необходимые для построения запроса, хранятся в полях объекта класса построителя запросов.
у меня немного другое - у меня есть необходимость писать на 2 языках ( postgresql и MS access (Transact SQL ) - через odbc ) причем использовать это может пользователь в любой момент сменить к какой базе подключился я хочу както попробовать унифицировать запросы =) не знаю получится или нет ... это просто хотелка
Ну так да, можете в QueryBuilder общие вещи запрограммировать, а потом на основе их генерировать нужный запрос с нужным синтаксисом. Это же норм задача для ООП. На вскидку сделать ещё иерархию QueryGenerator, которому Builder будет передавать все данные.
Я вам и не пишу про Doctrine, я об общих принципах построения таких вещей. QueryBuilder должен накапливать инфу, чтоб потом быстро сгенерировать запрос