ООП — всего лишь способ мыслить. Можно взять тот же brainfuck и написать статью, что я не понимаю его. Есть так же АОП, с ним все хорошо? Напишите топик и на эту тему, можно будет продолжить холивар.
Все исходит из сценариев использования (обычно называется спецификацией, ТЗ, таской, фичей и т.д.). Ибо система объектов, которые делают ненужные вещи никому ненужна.
В конце концов Вы все переводите в объекты (классы), потому как это дает возможность делегировать обязанности на определенные логические и структурированные части кода
Систему на много проще проектировать в контексте объектов (а не данных и методов, которые будут их обрабатывать). На много проще расширять систему построенную на объектах и определенных связях ибо у каждого свои обязанности. Тот же смысл, что и в жизни.
А на счет собак:
>> теперь было непонятно, следует ли собаке самой себя выгуливать, или для этого нужен специальный ВыгулМенеджер
менеджер для выгуливания нужен, если в нем есть (или будет) смысл. А собака может и сама прогуливаться, ведь живут как-то бездомные собаки=)
Любые решение проектировщика зависят от конкретно поставленной задачи и его способности смотреть предугадывать возможные варианты развития системы.
А статью считаю бредовой отчасти, такое ощущение что у автора накипело просто.
возможность автоматически генерировать первоначальный пароль для пользователя или в качестве такого брать номер телефона
Поле пароля можно убрать в настройках. Пользователь всегда регистрируется после заказа (почему бы и нет, если информация о нем все равно попадает в данные о заказе)
О возможностях здесь писать нет смысла. По скольку основное отличие в том, что в 0 Step Checkout на один шаг меньше чем в остальных. Я сделал небольшой обзор расширений с максимальной, минимальной и средней ценой. И хотел акцентировать внимание на недостатках существующих решений и причине почему создание нового расширения являлось актуальным
В данном случае вызов объекта захардкодженый. Register по сути выполняет работу некого кэша (на один http запрос). Где Вы видели, чтобы драйвер кэша был захардкоджен?
Зачем мешать логику реестра и ектив рекорд? Будут потом проблемы с тестированием;
А если хотите вызывать $user->getArticles() создайте свойство $_articles;
public function getArticles() {
if (!$this->_articles) {
$this->_articles = parent::getArticles();
}
return $this->_articles;
}
Обычно в начале любой книге по программированию написано, что имена переменных должны быть максимально краткими и нести максимальную смысловую нагрузку.
Почему-то никто не пишет
Никто не запрещает делать логическую структуру директорий и при этом использовать короткие имена классов.
К примеру Symfony 1.x, каждый плагин имеет свой префикс (обычно 2 символа) и свою директорию.
И найти все получается достаточно просто.
Подскажите пожалуйста как быть если нужно изменить поведение блока? Например, в админке добавить кнопку Export Products на странице где выводятся продукты
Очень поверхностно. Почему не сравнили метод перезаписи и обсервера?
Минусы, плюсы? Как быть с блоками событий там на много меньше чем в моделях.
Написали что какие параметры передаются, но вместо того чтобы использовать response из события, вы обратились к фронт контроллеру. Почему?
В конце концов Вы все переводите в объекты (классы), потому как это дает возможность делегировать обязанности на определенные логические и структурированные части кода
А на счет собак:
>> теперь было непонятно, следует ли собаке самой себя выгуливать, или для этого нужен специальный ВыгулМенеджер
менеджер для выгуливания нужен, если в нем есть (или будет) смысл. А собака может и сама прогуливаться, ведь живут как-то бездомные собаки=)
Любые решение проектировщика зависят от конкретно поставленной задачи и его способности смотреть предугадывать возможные варианты развития системы.
А статью считаю бредовой отчасти, такое ощущение что у автора накипело просто.
Поле пароля можно убрать в настройках. Пользователь всегда регистрируется после заказа (почему бы и нет, если информация о нем все равно попадает в данные о заказе)
Зачем мешать логику реестра и ектив рекорд? Будут потом проблемы с тестированием;
А если хотите вызывать $user->getArticles() создайте свойство $_articles;
Рекомендую почитать: «Патерны Проектирования» Гамма Эрик
Вы скрывает логику в защищенном методе, последующее поведение экземпляра класса не очевидно.
Почему-то никто не пишет
Я конечно утрирую, но смысл тот же
К примеру Symfony 1.x, каждый плагин имеет свой префикс (обычно 2 символа) и свою директорию.
И найти все получается достаточно просто.
Подскажите пожалуйста как быть если нужно изменить поведение блока? Например, в админке добавить кнопку Export Products на странице где выводятся продукты
Минусы, плюсы? Как быть с блоками событий там на много меньше чем в моделях.
Написали что какие параметры передаются, но вместо того чтобы использовать response из события, вы обратились к фронт контроллеру. Почему?