За последние 24 часа нас посетили 26730 программистов и 1482 робота. Сейчас ищут 935 программистов ...

Классы уровень 2 =)

Тема в разделе "Прочие вопросы по PHP", создана пользователем Slavka, 15 фев 2015.

  1. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    Доброе время суток всем зашедшим.
    Изучая 1 проект наткнулся на интересное использование методов - очень наглядно и красиво.. но читая маны я такого нигде не встречал
    итак вот это использование
    Код (PHP):
    1. $obj= new myClass();
    2. $obj->getProperties()->setCreator("создатель")
    3.                              ->setLastModifiedBy("создатель")
    4.                              ->setTitle("Заголовок документа")
    5.                              ->setCategory("Разное");
    6.  
    7.  
    начал изучать класс - и нахожу что все это обычные функции без всяких заморочек ... может я что конечно упускаю.

    вот пример нескольких функций

    Код (PHP):
    1. class myClass {
    2.  private $_properties;
    3.  
    4.     public function getProperties()
    5.     {
    6.         return $this->_properties;
    7.     }
    8. }
    9.  
    возможно это важно но функции разбросаны по разным файлам
    Код (PHP):
    1. class myClass_DocumentProperties //когда писал специально проверил extends отуствует
    2. {
    3.     private $_created;
    4.     private $_lastModifiedBy;
    5.  
    6.     public function setCreator($pValue = '') {
    7.         $this->_creator = $pValue;
    8.         return $this;
    9.     }
    10.  
    11.     public function setLastModifiedBy($pValue = '') {
    12.         $this->_lastModifiedBy = $pValue;
    13.         return $this;
    14.     }
    15.  
    16.  
    17. }
    18.  
    находил функцию автозагрузки классов .. там все стандартно составить путь к файлу - и загрузить класс.

    Так вот кто может ссылку дать на какоето чтиво или как называется такой стиль написания или объяснить что и как это делается..
    если я правильно понимаю - вызови функцию не по порядку - будет ошибка..
    заранее спасибо
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  3. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    о пасиб то что нужно =)

    Добавлено спустя 16 минут 19 секунд:
    теперь надо придумать как их сделать зависимыми - ну например ..

    чтобы сделать банальную строку select * from table where id =10

    это просто что первое в голову пришло

    $sql = new SQlclass;

    $sql->Select(id,name,value)
    ->from (table)
    ->where (id,10);

    теперь то что я имею ввиду - вызвать from без select не имеет ни какого смысла - вот это как то надо описать не ужели ифами в каждой функции.
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  5. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    пасиб .. пошел смотреть =)
     
  6. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Вообще, в том-то и прелесть кверибилдеров, что их методы вызываются в произвольном порядке. У меня бывает что один запрос строится в совершенно разных местах проги, и вполне может получится, что order_by будет вызван раньше какого-нибудь where. Вся суть сводится к тому, что querybuilder склеивает запрос прямо перед выполнением, когда у него есть уже все данные, чтоб его сформировать. До этого все данные, необходимые для построения запроса, хранятся в полях объекта класса построителя запросов.
     
  7. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    у меня немного другое - у меня есть необходимость писать на 2 языках ( postgresql и MS access (Transact SQL ) - через odbc ) причем использовать это может пользователь в любой момент сменить к какой базе подключился

    я хочу както попробовать унифицировать запросы =) не знаю получится или нет ... это просто хотелка
     
  8. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Ну так да, можете в QueryBuilder общие вещи запрограммировать, а потом на основе их генерировать нужный запрос с нужным синтаксисом. Это же норм задача для ООП. На вскидку сделать ещё иерархию QueryGenerator, которому Builder будет передавать все данные.
     
  9. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    я не использую доктрину ) я сейчас свой класс пишу - делаю свой querybuilder
     
  10. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Я вам и не пишу про Doctrine, я об общих принципах построения таких вещей. QueryBuilder должен накапливать инфу, чтоб потом быстро сгенерировать запрос