• Private методы и свойства

    SowingSadness
    @SowingSadness Автор вопроса
    Представьте если это значение не будет скрыто и другой разработчик, наследующий класс решит изменить его.

    Да. Другой разработчик хочет адаптировать framework под себя и изменить под себя поведение счетчика. И это нормально.

    Где то в воздухе летает знание о том, когда это надо запретить, а когда разрешить, но пока я еще не могу это понять :(
  • Private методы и свойства

    SowingSadness
    @SowingSadness Автор вопроса
    Я понимаю о чем вы говорите. Вы хотите защитить реализацию родителя от «вандализма» потомка. Но в чем тогда суть расширение класса, как не изменение реализации родителя?
    Если ваш потомок вызвал ошибку, значит вы не верно его реализовали и это рабочий момент.

    Есть небольшой пример:
    Класс родитель работает со списком значений.
    Класс потомок работает с отфильтрованным списком значений.
    В каждом методе класса родителя используется получение списка значений через getter.
    В классе потомка невозможно переопределить getter, т.к. для него не доступно свойство.
    Что делать? Переписывать полностью?
  • Private методы и свойства

    SowingSadness
    @SowingSadness Автор вопроса
    Т.е. мы должны ограничивать возможность расширения.
    Хорошо.
    Что делать, если кому то понадобится использовать мой класс и он должен перегрузить один из публичных методов.
    В котором используется приватное свойство или метод?
    Ему придется переписывать весь класс?
  • Private методы и свойства

    SowingSadness
    @SowingSadness Автор вопроса
    Ни сколько это не троллинг, это вопрос который мне интересен(и важен).
    Я знаю как работает мой класс, но я не знаю как захотят его расширить.
  • Private методы и свойства

    SowingSadness
    @SowingSadness Автор вопроса
    как выяснить, если мы не знаем о том, как люди будут его расширять?
    другие разработчики со всего мира и не из нашей компании.
  • Private методы и свойства

    SowingSadness
    @SowingSadness Автор вопроса
    Т.е. вы хотите сказать, что проектируя класс, мы должны ограничивать возможность его расширения?
  • Private методы и свойства

    SowingSadness
    @SowingSadness Автор вопроса
    Про поведение private в разных языках не знал — спасибо.
    Есть проблема, при подходе открытия доступа в момент острой нужды. Вам необходимо хорошо знать родительский класс. Т.е. при реализации наследника, вам нужно хорошо знать внутреннюю кухню, для того что бы позволить себе изменить область видимости свйоства/метода в родители. Что по сути, нарушение инкапсуляции. Да и не всегда это возможно, например когда вы используете framework.
    Предположим вы его разработчик. Вы понимаете, что пользователи будут расширять его возможности. При этом использования private методов или свойств может сильно урезать расширение. Как поступать, когда использовать private, а когда protected?
  • Private методы и свойства

    SowingSadness
    @SowingSadness Автор вопроса
    Я могу сказать, что инкапсуляция скрывает реализацию и минимизирует интерфейс для клиента. Потомок в данном случае не является клиентом.
  • Private методы и свойства

    SowingSadness
    @SowingSadness Автор вопроса
    Немного подправлю вопрос, а то он, похоже, немного не понятен.
    Для чего используется private понятно, но не ясно, в каких случаях необходимо его использовать, когда он оправдан?
  • Private методы и свойства

    SowingSadness
    @SowingSadness Автор вопроса
    Почему? Публичный интерфейс, не меняется. А вот смысл ограничивать доступ наследнику, не ясен.
  • Отличая Symfony 2 и Yii?

    SowingSadness
    @SowingSadness Автор вопроса
    Боже ш мой.
    Ищите по статье: «Poor Type Hinting»
  • Вечный вопрос: какой фреймворк вы посоветуете для конкретных задач?

    SowingSadness
    @SowingSadness
    Эх, был сбой на хабре, поэтому на работе не получилось ответить, так что сейчас кратко изложу то что хотел.
    Просто унаследовать класс модели. См. FOSUB.

    Посмотрите предложенную мною ссылку и поймете что я говорю про наслдеование от Entity, соответственно ваш примре не к месту. И сразу отвечу сам. Сделать наследования между Bundle, так что бы «родительский» Bundle не знал о «дочернем» — нельзя

    Ок, попался, мы переопределяли свойства. +
    Т.е. в простейших вещах нет продуманности архитектуру — пункт засчитан?

    Мб даже только EmbeddedForms можно обойтись.

    Покажите как, я вам не верю, на мой взгляд это невозможно. Есть ещё вероятность, что вы меня не поняли.

    Про Events — я говорю о том, что там нельзя делать flush. Один из разработчиков сказал, что такое поведение ими не предполагалось и они не собираются фиксить баг, где в preUpdate добавляют сущности для сохранения.

    Ну и на последок, прежде чем говорить о продуманной архитектуре, посмотрите в код:
    github.com/doctrine/doctrine2/blob/master/lib/Doctrine/ORM/UnitOfWork.php#L2314

    Vampiro — постараюсь закруглиться и не взрываться негодованием :)
  • Вечный вопрос: какой фреймворк вы посоветуете для конкретных задач?

    SowingSadness
    @SowingSadness
    У меня несколько вопросов:
    — как вы оценили сложность логики? (трафик тут вообще не из нашей предметной области, если хотите, то объясню почему)
    — почему вы мне рассказываете что у вас есть опыт работу с yii? это же не касается нашей с вами дискуссии.
    — где мат с моей стороны? процитируйте пожалуйста

    На счет конкретики. Давайте посмотрим ваши первые комментарии и найдем там конкретику. Можете опять же процитировать себя, для наглядности. Я там вижу как правило воду.
  • Вечный вопрос: какой фреймворк вы посоветуете для конкретных задач?

    SowingSadness
    @SowingSadness
    Что в этих сервисах большого?
    То что они под большой нагрузкой отдают статичный контент? Функционала там большого нет HighLoad c без функционала.
    Вы опять же не понимаете для чего существуют framework'и. Они нужны для снижение сложности проекта в разработке и поддержке. Отдача статики тут не при чем.

    Вот если взять для примера на Yii: Oyepages.com
    Социалка. Вот там функционал нужен и его много.

    p.s.
    где оправданные замечания, а не вода? Где яд?
  • Вечный вопрос: какой фреймворк вы посоветуете для конкретных задач?

    SowingSadness
    @SowingSadness
    А в чем проблема? В одном из проектов так и делаем.

    И не меняете private свойств объекта? оО Что ж вы там расширели?

    А в чем проблема? Реализуемо с EmbeddedForms + DataTransformers. Более того, опять же, в одном из проектов делаем еще более сложные махинации.

    Извиняюсь, поторопился. Поля модели являются моделями. Т.е. горизонтальное расширение полей модели.

    Event Listeners.

    Этого делать нельзя:
    docs.doctrine-project.org/projects/doctrine-orm/en/2.1/reference/events.html#postupdate-postremove-postpersist

    Без конкретики не могу ответить. Мы испольузем BeSimpleSoapBundle без проблем.

    Я привел в пример документацию Yii где показано, как обычный action превращается в часть API введением парочки строчек в анотацию. Никаких бандлов. Никаких ограничений на переписывание роутинга и выделение специального класса.

    parameters.yml, routing.yml, security.yml, и возможность определять по бандлам services.yml и routing.yml не в счет?

    Stable сейчас 2.0.17, так что говорим про это чудо. Эти конфиги не в счет. нужена область видимости именно config.yml, например что бы добавить ресурсы или стили другого бандла, лиьш поделючением его в AppKernel без тыканье в config.yml — пример корявой архитектуры

    Можем.

    Как? docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/inheritance-mapping.html

    Можно.

    Очередное «Как?»
  • Вечный вопрос: какой фреймворк вы посоветуете для конкретных задач?

    SowingSadness
    @SowingSadness
    MpaK999
    Согласен. Могу так же добавить, что не хватает реализации parent() в шаблонах которые использованы в use.
    Понятно что это горизонтальное расширение, но то что родительский шаблон должен знать как именно его расширяет третий шаблон — очень сильно огорчает.
  • Вечный вопрос: какой фреймворк вы посоветуете для конкретных задач?

    SowingSadness
    @SowingSadness
    Уважаемые хаброюзеры Inori и chetzof.
    Даю вам наводку:
    ООП создан для того что бы снизить сложность проекта.
    Framework'и созданы для того что бы снизить сложность проекта в прикладной задачи соответствующей определенным критериям.
    Если framework не понижает уровень сложности задачи. Если он сложен для изучения и понимания — это говорит о его плохой архитектуре строго из определения:
    Архитектура framework'a плохая тогда, когда она не позволяет снизить сложность проекта, т.к. это цель его назначения.

    Покажите мне хоть один мало-майски большой проект реализованный на Symfony 2.
    Воду лить не надо, что ошибки из-за невнимательности. Есть момент где увидели, где я не прав, пишите конкретику. Воду, что что якобы, вы не понимаете архитектуру, можете лить блондинкам на свиданиях а не в техническом сообществе.
  • Вечный вопрос: какой фреймворк вы посоветуете для конкретных задач?

    SowingSadness
    @SowingSadness
    Одна из лучших архитектур

    Попробуйте расширить UploadedFile что бы можно было работать с загруженными файлами так как вам надо.
    Попробуйте использовать FormBuilder так что бы он подтягивал поля модели, которые являются полями другой модели у которых связь 1 к 1.
    Что делать если в DI Container лежит не тот объект на который вы расчитывали, где искать ошибку?
    Что делать если нужно вести историю изменения объекта, но нельзя использовать EntityManager в lifecycleCallbacks. Зачем тогда они нужны?
    Почему что бы реализовать SOAP нужно встать раком? (вот где не раком: www.yiiframework.com/doc/guide/1.1/en/topics.webservice)
    Почему один конфиг на все приложение(app/config/config.yml)?

    Модульнее некуда

    Почему мы не можем унаследоваться от Entity из FooBundle, который не знает о нашем BarBundle?

    Поддержка пользователей через FOSUBundle

    Какого хрена SecurityBundle как из коробки, так и из FOS такие убогие по функциональности но такие здоровые? Что за увеличение сложности. Им до RBAC в Yii далеко.

    Официально русской поддержки нет, но русских много в этом коммюнити,

    Почему на официальном IRC канале(англоязычном) могут помочь лишь с простейшими вопросами, а если ты хочешь узнать принцип работы какого нибудь AuthorizationBundle тебе приходится лесть в исходники и рыть самому, т.к. ни документации ни в IRC тебе помочь не могут(поисковики тоже молчат)

    Полная интеграция с Doctrine

    Отлично. Почему в столь прекрасной ORM невозможно сохранить не все измененные, а лишь одну измененную сущность?

    Я могу продолжать очень долго.
  • Вечный вопрос: какой фреймворк вы посоветуете для конкретных задач?

    SowingSadness
    @SowingSadness
    Кстати, к Yii можно прикрутить Twig — очень просто(есть даже расширение для Yii)
    Очень достойный шаблонизатор
  • Какой самый дешёвый телефон с поддержкой Google Contacts?

    SowingSadness
    @SowingSadness
    Нормально работает с Google Contacts только Android.

    Ради справедливости, не только Андройд.
    WP работает идеально с Google Contacts.