Задать вопрос
  • Sudo: add-apt-repository: command not found. Что делать?

    @a_alexeev
    sudo apt-get install software-properties-common python-software-properties
    Ответ написан
    Комментировать
  • Увидим ли мы C# на Linux?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    www.mono-project.com

    что вам еще надо? Чуваки из мелкософта туда активно контрибьютят, серсы пооткрывали (постепенно, это довольно длительный процесс учитывая масштабы продукта), vnext вон вроде обязались даже тестить под моно.
    Ответ написан
    Комментировать
  • Где можно получить втыка за свой код и где подскажут как лучше сделать? И заодно поучится на ошибках других?

    atri24
    @atri24
    .net developer
    Имхо, на чужих ошибках не научишься. Надо просто писать больше кода и сам со временем поймешь как это делать лучше.
    Ответ написан
    2 комментария
  • Музыка для кодинга, под что вы программируете?

    @DeScWD
    под Ханса Зиммера
    Ответ написан
    Комментировать
  • Хорошая архитектура symfony app?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Хорошая архитектура - это очень понятная архитектура, когда для каждого типа задачи созданы логичные и понятные средства. Когда приложение построено таким образом, то его получится и тестировать, и изменять/расширять. Если нужно добавить новый класс, то в хорошей архитектуре понятно, куда его нужно добавить.

    Всего существует не так много типов задач:
    1) хранение данных приложения - модель. Модель ничего не должна знать о базе данных.
    2) слой доступа к БД - репозиторий. Вся работа с БД - здесь, и всё, что связано с одной сущностью - в репозитории этой сущности. Если нужно взаимодействие нескольких сущностей, то, скорее всего, репозиторий одной из сущностей не подойдёт, эта задача пойдёт в сервис.
    3) бизнес-логика - сервисы. Сервисы умеют получать данные (модели), обращаясь к репозиториям или лучше к другим сервисам (служебным).
    4) служебные задачи - сервисы. Например, кэширование данных реализуется в специальном сервисе.
    5) отображение данных - шаблоны. Весь html - только в шаблоне, а также логика отображения тоже в нём (вывод списков, некоторые фильтры)
    6) подготовка данных к отображению - контроллер. Запрос пользователя приходит в контроллер, контроллер же обращается к сервису (или в простом случае к репозиторию) за данными. Возможно, для обработки запроса нужно получить данные из нескольких сервисов/репозиториев, а скорее, правильный сервис сам подготовит все данные для запроса.

    Получается, контроллер вызывает сервис, который предоставит готовые данные, и будет очень простым - "тонким". Основной код, отвечающий за работу задач приложения - в сервисах. Один и тот же сервис часто будет вызываться из разных контроллеров. Работа с БД - не в сервисе и уж точно не в контроллере, для этого нужен репозиторий.
    Если структура БД изменится, то в хорошей архитектуре поменять придётся только репозиторий, но не сервисы/контроллеры. С другой стороны, изменение схемы БД чаще всего связаны с новыми фичами, поэтому придётся добавить новый сервис или изменить существующий.
    Модель же умеет не так много - выводить свои данные, возможно, в разных форматах (данные, возвращаемые моделью не обязаны совпадать с полями сущности - см. пример в комментарии keltanas в ответе Владимир Балин).

    Модели, репозитории, контроллеры, шаблоны обычно расположены в особых специальных папках проекта. А вот сервисы могут быть расположены в совершенно разных папках проекта, созданных специально для них. Как пример, сервисы кэширования можно поместить в папку Persistance - отдельный сервис для получения сущностей и отдельные сервисы для получения агрегированных данных (полученных из разных сущностей). При изменении способа кэширования поменяются только сервисы, связанные с кэшированием, но не остальные части проекта.

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

    P.S. Я вот написал, что модель не должна ничего не знать о базе данных, получается, что неправильно использовать аннотации для маппинга полей сущности на поля таблиц. После ответа на этот вопрос я, скорее всего, пересмотрю свои взгляды на @ОRМ-аннотации в моделях.
    Ответ написан
    23 комментария
  • Хорошая архитектура symfony app?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Если все приложение можно без проблем покрыть юнит тестами, если у вас тонкие контроллеры и довольно тонкие сервисы и жирные модели, если вы соблюдаете принципы SOLID и т.д... то у вас выходит код который очень легко поддерживать и расширять. Для проектов посложнее есть всякие там DDD, CQRS, есть гексагональная архитектура...

    Короче все сводится к такому параметру как maintainability.

    https://github.com/phptodayorg/php-must-watch#arch...

    updated
    если интересно, есть пример "хорошей" архитектуры (ну или основы для нее), ну или как минимум интересной:
    https://github.com/qandidate-labs/broadway

    Конечно этот пример не подходит для всех предметных областей, но как один из вариантов "посмотреть как люди делают" - как по мне неплохо.
    Ответ написан
    4 комментария
  • PHP. Синтаксис: почему часто пишут так, а не иначе?

    SagePtr
    @SagePtr
    Еда - это святое
    Потому что во втором случае можно нечаянно поставить одинарный знак равенства (присваивание вместо сравнения), синтаксически это будет верно и ошибку найти будет сложновато.
    Ответ написан
    Комментировать
  • PHP. Синтаксис: почему часто пишут так, а не иначе?

    @vilgeforce
    Раздолбай и программист
    Так отлавливают ошибку "присвоение вместо сравнения". "$a = true" - валидный код, "true = $a" - нет. Но читаемость ниже.
    Ответ написан
    Комментировать
  • Откуда быстрее получать информацию, mysql или файл?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Хранится? Работает? Ничего не трогай.
    Ответ написан
  • Как же всётки создавать админку c Symfony2?

    @sand_alkr
    инженер-программист
    Настраиваю GeneratorBundle под проект, и делаю CRUD по сущностям. Admin бандлы не прижились...
    Ответ написан
    1 комментарий
  • Какие backend технологии сейчас популярны?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    какие знания лучше прокачать с прицелом на будущее

    Программистские.
    • ООП
    • отладка
    • паттерны проектирования

    Лет на 5 изучения тебе хватит.
    Ответ написан
    2 комментария
  • Как же всётки создавать админку c Symfony2?

    bboytiwst
    @bboytiwst
    А в чем проблема с REST? Мне кажется на уровне таких бандлов как FOSRESTBundle почти все проблемы уже решены и стоит только правильно всё это приготовить ( С добавлением в симфони 2.6 групп сериализации так и вовсе без него можно обойтись. Из коробки даже всё ок у симфони сейчас).
    По поводу админок, так здесь очень зависит от конкретной задачи, т.к у каждого бандла будь-то Sonata, AdminGenerator или же новоиспеченный EasyAdmin есть свой функциональный предел, понимая этот придел и текущую задачу надо уже и выбирать бандл. Например когда заказчику главное зарелизиться, а функционал админки потом можно допиливать по ходу делаа, то для таких случаев подойдет EasyAdmin, AdminGenerator, когда же надо что то серьезное более-менее тогда надо брать Sonata, но у неё есть проблема с формочками и когда у вас админка начнет активно расти и расширяться, то в этот момент начнутся проблемы.
    Как вариант можно админку писать на js фреймворке (что удобно, т.к не требуется создавать отдельный бандл и можно просто добавить контроллер для "REST - админки")
    Другой вариант это писать её с 0 используя формочки симфони и всё остальное с базового комплекта (не используя никаких бандлов для админки).
    Ответ написан
    7 комментариев
  • Backbone.js vs Angular.js: что выбрать?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    не поверите, но вы можете использовать backbone в рамках проекта на angular.
    Ответ написан
    Комментировать
  • Apache, NGINX, PHP-FPM - что лучше?

    mobilz
    @mobilz
    я не видел ничего удобней mod_php. Гибче, чем apache+mod_php вы не найдёте однозначно.
    С другой стороны лично я уже лет 5 не конфигурил apache, т.е. перешёл на nginx+php-fcgi. Мне хватает + для моих проектов требуется быстродействие. Точнее, отсутсвие тормозов в тривиальных задачах. Да и в общем функционала хватает и гибкости. Но mod_php явно гибче.
    Ответ написан
    1 комментарий
  • Как вы ушли от PHP?

    gricom
    @gricom
    А я ушел от PHP в армию. Вернулся Java программистом.
    Ответ написан
    1 комментарий
  • Как вы ушли от PHP?

    Lans
    @Lans
    1) Перешел в геймдев

    2) ActionScript, Python, и тот же PHP — он в разы удобнее для того чтобы быстро написать простое приложение. Например, у нас клиент на AS, сервер на питоне (с GAE), а статистика на php+mysql, и мне это нравится.

    3) Нет никакой пользы от того чтобы «уйти» от языка. Есть польза от того, что, возможно, изучил что-то новое, да.
    Ответ написан
    1 комментарий
  • Как вы ушли от PHP?

    1) Причина перехода проста — устал от «запутанности» кода. С ростом проектов, управлять ими становилось в разы сложнее(не говоря уже об изменениях). Стоит отметить что писал я преимущественно либо без фреймворков либо на Drupal.
    2) Python и Django, Flask.
    3)Python понравился своей лаконичностью и простотой. От Django-вского MTV получаю сплошное удовольствие. Код прост и понятен. Теперь, вносить изменения в проект легко — и ничего попутно не ломается.

    Конечно, большинство моих проблем от собственной глупости. Если бы я теперь вернулся на PHP, может быть и писал бы нормальные приложения.
    Ответ написан
    Комментировать
  • Как вы ушли от PHP?

    akzhan
    @akzhan
    На очередной работе практически все писали на Perl, так что так и перешел. Правда, иногда приходилось что-то править и на PHP.

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

    Польза — зарплата выше.
    Ответ написан
    1 комментарий
  • Как вы ушли от PHP?

    А мы в нашей фирме себе ТУПО сказали, что следующий проект будет на питончике… Сделали.
    Ответ написан
    1 комментарий