ФорумПрограммированиеПыхнуть хотите?F.A.Q. → Конфигурация сайта

Конфигурация сайта

  • vasa_c

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

    Spritz 27 января 2011 г. 11:58, спустя 8 минут 36 секунд

    Я бы ответил, но тут опять уже 3 страницы, пока меня не было
    Спустя 114 сек.
    1. Нет никакой "конфигурации сайта", есть конфигурации инстансов объектов. Соответственно поля конфига группируем по инстансам:

    Я считаю, что конфиг, это конфиг. Он выше всех объектов и всего остального.

    3. В самом инстансе доступ к свойствам конфига получаем так:

    Это означает, что все классы нужно реализовывать в соответствии с этим. Ничего стороннего взять нельзя.
  • vasa_c

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

    Spritz 27 января 2011 г. 12:03, спустя 5 минут 36 секунд

    А вот все навороты с классами, ИМХО - навороты ради наворотов, не вижу существенных приемуществ.

    Конфигурация, всё таки не самая незначительная часть системы. Выделить для неё один классик, чтобы он сам её грузил и отдавал, без глобальных переменных, имхо, не такие уж и большие навороты.
  • phpdude

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

    Spritz 27 января 2011 г. 12:13, спустя 9 минут 20 секунд

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

    я к тому, что аттрибуты в хмл - нормально, больше их нигде не встречается, ибо больше они нигде не нужны (.net я не учитываю, там аттрибуты притянуты
    за уши к описаниям классов).

    в общем - смысле больше чем в хмл в них нигде нету это мое имхо.
    Спустя 19 сек.
    аттрибут - это как "множественное значение"
    Сапожник без сапог
  • AlexB

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

    Spritz 27 января 2011 г. 12:14, спустя 1 минуту 13 секунд


    А вот все навороты с классами, ИМХО - навороты ради наворотов, не вижу существенных приемуществ.

    Конфигурация, всё таки не самая незначительная часть системы. Выделить для неё один классик, чтобы он сам её грузил и отдавал, без глобальных переменных, имхо, не такие уж и большие навороты.
    Ну разве что, если все классы делать наследниками от конфигуратора, тогда да, некоторе приемущество есть.
    А иначе какая разница include или ClassName::get, один фиг потом либо результат глобальным объявлять, либо в каждый конструктор добавлять параметр.
  • vasa_c

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

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

    Spritz 27 января 2011 г. 12:16, спустя 55 секунд

    ЗЫ. Кстати, в порядке флейма про симплеэксемель и аттрибуты, кто-нибудь может мне объяснить, почему у него метод attributes так по идиотски работает?
    Спустя 20 сек.

    Конфигурация сайта 2.2: совместная разработка (наследование)
    О я это еще не читал …
  • vasa_c

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

    Spritz 27 января 2011 г. 12:25, спустя 8 минут 18 секунд

    О я это еще не читал …

    ещёб, я только выложил )
  • master

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

    Spritz 27 января 2011 г. 12:35, спустя 10 минут 41 секунду

    Я считаю, что конфиг, это конфиг. Он выше всех объектов и всего остального.

    Подходит для религиозной проповеди, но не для техописания.
    Чтобы решить каким должен быть конфиг нужно знать его роль в приложении в целом, нужно знать как устроено приложение или как предполагается его устроить. Я предлагаю конфигурацию, в которой объекты максимально независимы друг от друга и взаимодействуют только на основе интерфейсов.
    В приложении существуют 3 базовых класса: factory, config, application.

    //index.php
    $factory = new Factory_class();
    $config = new Config_class();
    $application = new Application_class($factory, $config);
    $application->run();

    Остальные (дочерние) объекты генерирует фабрика, и конфигурацию в объекты передаёт она же. Дочерние объекты не обмениваются никакими данными конфигурации. Именно поэтому я говорю что нет никакой конфигурации приложения в целом, есть только конфигурации отдельных объектов. Мы можем вообще разбить наше приложение на дочерние объекты и передавать каждому конфиг прописав это явно в коде.
    instance1 = ClassA + config_of_instance1.php
    instance2 = ClassB + config_of_instance2.php
    instance3 = ClassB + config_of_instance3.php
    и т.д.

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

    Если же как ты говоришь приложение не содержит объектов то и схема работы конфига будет другой.

    Это означает, что все классы нужно реализовывать в соответствии с этим. Ничего стороннего взять нельзя.

    Да. Ну либо использовать объект с интерфейсом ArrayAccess - большинство кода понимает хэш-массивы.
    не всё полезно, что в swap полезло
  • vasa_c

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

    Spritz 27 января 2011 г. 12:45, спустя 10 минут 4 секунды

    Взаимоисключающие параграфы детектед.
    объекты максимально независимы друг от друга

    >Это означает, что все классы нужно реализовывать в соответствии с этим.
    Да
  • phpdude

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

    Spritz 27 января 2011 г. 12:47, спустя 1 минуту 38 секунд

    Остальные (дочерние) объекты генерирует фабрика, и конфигурацию в объекты передаёт она же. Дочерние объекты не обмениваются никакими данными конфигурации. Именно поэтому я говорю что нет никакой конфигурации приложения в целом, есть только конфигурации отдельных объектов. Мы можем вообще разбить наше приложение на дочерние объекты и передавать каждому конфиг прописав это явно в коде.

    +1. такой же подход.

    грязными руками никто не имеет права лазать в глобальный конфиг
    Сапожник без сапог
  • master

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

    Spritz 27 января 2011 г. 12:48, спустя 43 секунды

    Детектор взаимоисключающих параграфов детектед
    не всё полезно, что в swap полезло
  • vasa_c

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

    Spritz 27 января 2011 г. 12:51, спустя 3 минуты 48 секунд

    Есть конфигурация системы, которая об объектах ничего знать не обязана.
    Есть объекты, которые не обязаны знать о конфигурации и в большинстве случаев и о системе.
    Есть система, которая берёт конфиг и на его основании создаёт объекты и устанавливает связи между ними.

    Это моё виденье моих систем. При осознании того, что каждый дрочит, как он хочет.
  • master

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

    Spritz 27 января 2011 г. 12:55, спустя 3 минуты 14 секунд

    грязными руками никто не имеет права лазать в глобальный конфиг

    Не, ну можно, но только в не глобальный, а базовый. Геморно иметь один большой супермассив - со временем в нём накапливаются поля, про которые разработчики не знают используются они или нет и ссут удалять. Поэтому конфиг лучше разбить на ветки, и каждому объекту "говорить" после создания: "используй вот эту ветку из этого конфига".
    не всё полезно, что в swap полезло
  • NRG

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

    Spritz 27 января 2011 г. 12:57, спустя 2 минуты 1 секунду


    Есть конфигурация системы, которая об объектах ничего знать не обязана.
    Есть объекты, которые не обязаны знать о конфигурации и в большинстве случаев и о системе.
    Есть система, которая берёт конфиг и на его основании создаёт объекты и устанавливает связи между ними.
    мне тоже такой подход по душе
  • vasa_c

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

    Spritz 27 января 2011 г. 12:58, спустя 1 минуту 39 секунд

    NRG, я знал, что ты меня поддержишь

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