ФорумПрограммированиеPHP для идиотовPHP и ООП → Нужен совет по реализации mvc-каркаса

Нужен совет по реализации mvc-каркаса

  • krasun

    Сообщения: 1370 Репутация: N Группа: Джедаи

    Spritz 20 июля 2010 г. 14:44, спустя 14 минут 35 секунд


    Во втором случае можно организовать автодополнение в IDE

    Извини, но такое ощущение, что ты помешан на этом и весь код под это подгоняешь. Хотя на самом деле, нужно проектировать так, что бы и в блокноте ты мог разобраться с интерфейсом.
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 20 июля 2010 г. 14:57, спустя 12 минут 29 секунд

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

    кому нужно?

    Вот я в Мадженте делаю
    $session = Mage::getSinglton('core/session');

    и дальше че? А дальше я делаю
    var_dump(get_class_methods($session));
    exit;

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

    А было б
    Mage::getContext()->session_core()->/* … */

    так тут мало того, что я увижу инстанция какого класа будет возвращена, какие методы в нем есть, так еще и я буду застрахован от опечатки в "session_core".
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 20 июля 2010 г. 17:01, спустя 2 часа 4 минуты 2 секунды

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

    +1 это полный пиздец, тамвся разработка идет в режиме дебага, иначе это не назвать, без обид чмокэ НРГ :)
    Сапожник без сапог
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 21 июля 2010 г. 2:41, спустя 9 часов 40 минут 5 секунд

    а типа такого не пойдёт?
    (я сам не знаю, но так обычно делается)
    /** @var session_core **/
    $session = Mage::getSinglton('core/session');
  • krasun

    Сообщения: 1370 Репутация: N Группа: Джедаи

    Spritz 21 июля 2010 г. 2:51, спустя 10 минут 24 секунды

    phpdude, а там что нет документации?
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 21 июля 2010 г. 3:04, спустя 12 минут 30 секунд

    kostyl, у меня нетбинс такое хавает только когда property/method класса, а вот так inline как у тебя - нет. Кроме того это слишком оптимистично: session_core. На самом деле там что-то типа [var]Mage_Core_Model_Session[/var] в лучшем случае. А может быть [var]Еще_Несколько_Вот_Таких_Слов_Будет[/var] в названии класса

    krasun, каждый раз лезть в доку по любой мелочи напрягает. И опять-таки, доки прописаны к классам. А я не всегда знаю какой клас мне вернут.
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 21 июля 2010 г. 3:12, спустя 8 минут 37 секунд

    да и вообще: какого черта я, пользователь фреймворка должен выделять каждый раз под всякую ерунду переменную, писать какого она типа? Это все можно сделать на автомате.
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 21 июля 2010 г. 3:13, спустя 24 секунды

    Абырвалг, а нельзя разве сделать что то такое, только с магентой и нетбианс
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 21 июля 2010 г. 3:19, спустя 6 минут 11 секунд

    ну для нетбинса таких выкрутасов не нужно, он сам сканирует проект. Просто Mage::getSinglton(); может вернуть хрен знает что
  • krasun

    Сообщения: 1370 Репутация: N Группа: Джедаи

    Spritz 21 июля 2010 г. 3:51, спустя 31 минуту 58 секунд


    ну для нетбинса таких выкрутасов не нужно, он сам сканирует проект. Просто Mage::getSinglton(); может вернуть хрен знает что

    Есть языки со статической типизацией, там таких проблем быть не должно, хотя есть свои нюансы
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 21 июля 2010 г. 7:48, спустя 3 часа 57 минут 30 секунд

    он сам сканирует проект

    это если есть phpDoc, на сколько я знаю…
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 21 июля 2010 г. 7:51, спустя 2 минуты 47 секунд

    дык а отчего ж ему не быть? Минимальные вещи типа @return я всегда ставлю
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 21 июля 2010 г. 8:05, спустя 13 минут 50 секунд

    итак, по поводу советов с каркасом. Я не являюсь истинной в последней инстанции, просто как я его вижу:

    Есть неймспейсы. Реальные (php >= 5.3) или фейковые (через префиксы у классов MyFw_Class1).

    Context - контейнер, единственный синглтон. Звездный такой объект, к нему можно достучаться в любом месте и получить какой угодно объект. Также через него вызов хелперов осуществляется.

    Request/Response/Session/Event/Validator/Translate/… - набор каких-то компонент.

    App - управлятор. Получает контекст, запускает диспетчеризатор УРЛов, контроллер, виджеты


    Проще всего - начать с компонент.
  • krasun

    Сообщения: 1370 Репутация: N Группа: Джедаи

    Spritz 21 июля 2010 г. 8:24, спустя 18 минут 33 секунды

    Абырвалг, прошу прощения. Но context, получается реестр? А App получается смесь бутсрапа с фронтконтроллером.

    А вообще так получается, нормальный каркас.
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 21 июля 2010 г. 8:54, спустя 30 минут 23 секунды

    у меня сейчас бутстрап - инифиализация лоадера, контекста, навешивание своих error handlers, не класс, просто сплошняком идет все (там 10 строчек).

    Context - по сути да, типа реестра, но порождающего. Сейчас он нерасширяемый, так как внутри этого контекста все имена классов захардкодены. Но я хотя бы смог собрать их все в одном месте, раньше было куда хуже.

    App - я не силен в паттернах, наверно это фасад
    Спустя 25 сек.
    фронт контроллер - частный случай фасада?

Пожалуйста, авторизуйтесь, чтобы написать комментарий!