Задать вопрос
  • Как правильно работать с объектами выборки doctrine в Symfony?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    дополню ответ Юрий

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


    Все сущности заворачиваются в прокси объекты, что бы работала "магия" вроде ленивой подгрузки и т.д. Именно по этому в сущностях "больше" чем есть на самом деле.

    По поводу коллекций, в Doctrine есть такая штука как Collection. Вы должны понимать что в доктрине вы оперируете не табличками в базе, а объектами. Строите именно объектную модель вашей системы. В этом ключе можете почитать что такое "агрегат сущностей". В вашем случае у вас агрегат будет состоять из двух сущностей. Product и его Image. Например если вы захотите сделать добавление картинок, вы можете сделать так:

    /**
     * usage: $product->addImage($image);
     */
    public function addImage(Image $image)
    {
        $this->images->add($image);
    }


    А коллекция сама выполнит persist новой сущности. Таким образом количество репозиториев уменьшается до количества корней агрегатов сущностей. В вашем примере "корнем", то есть вершиной графа взаимоотношений объектов в контексте продуктов, является сам продукт. А потому репозиторий мы будем делать только для продуктов. Все остальное внутри оного разруливается либо при помощи коллекций.

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

    К примеру "новички" в доктрине любят персисть сущность даже для обновления. Они путают `persist` и `save`. Так вот, если вы загрузили сущность из базы через доктрину, то сущность уже попадает в unit of work. И делать persist уже не нужно, этот метод только для того чтобы доктрина узнала о чем-то новом. А так она и так знает про эту сущность. В итоге вы можете просто что-то поменять и вызвать flush. То есть репозиторий - это тупо хранилище. Хранилище умеет хранить. Изменять то, что оно хранит оно не может.

    Так же рекомендую на тему репозиториев почитать это:

    www.whitewashing.de/2013/03/04/doctrine_repositori...

    Ну и в целом.

    https://www.youtube.com/watch?v=rzGeNYC3oz0 - доклад о том как готовить доктрину от авторов оной.

    От себя лишь добавлю простые правила:

    - Не используйте напрямую доктриновские репозитории. Пишите свои, а в них уже юзайте доктриновские. Не стоит размазывать доктрину по всему проекту, потом это будет нереально поддерживать.
    - Не наследуйтесь от EntityRepository. Это внутренний механизм доктрины общего назначения. Используйте их в своих репозиториях со своим интерфейсом, повышая специфичность и ужесточая контроль за тем кто что юзает.
    - Старайтесь использовать entity manager только в своих репозиториях и каких то небольших сервисах. Не размазывайте все по всюду.

    что очень сильно срет память.


    Доктрина гарантирует вам что в памяти будет всегда только один инстанс сущности. То есть если у вас есть 10 объектов одного типа и имеющих один объект, это все будут ссылки на одну сущность. В вашем случае у вас просто циклическая ссылка между продуктами и изображениями. dump циклические ссылки не особо умеет.

    Это логичное ограничение, дабы не возникало ситуаций что вы обновили что-то в одном экземпляре сущности и что-то в другом, и в базу попадут только часть изменений. За подробностями - читайте документацию к доктрине в отношении UnitOrWork и Identity Map.
    Ответ написан
  • Symfony, что такого сделать джуниору?

    GTRxShock
    @GTRxShock
    SA
    https://habrahabr.ru/post/301760/

    потом можно запилить систему учета обращений, с наглядной статистикой, печатью бланков, можно внедрить разделение ролей менеджер/сотрудник. Потом с наработками идете в ближайшую аутсорс компанию и забываете о возможности задавать вопросы, по причине полной занятости :D
    Ответ написан
    Комментировать
  • Какой функционал необходимо сделать на yii2, чтобы работодателю было понятно, что я с ним знаком?

    @hufawoso
    Все верно, т.к. сегодня yii есть, а завтра его перестанут поддерживать и нужно будет писать на другом фреймворке.
    Поэтому работодатели в первую очередь смотрят знание нативного php, умение находить решения, и общую адекватность человека.
    Ответ написан
    Комментировать
  • Какой функционал необходимо сделать на yii2, чтобы работодателю было понятно, что я с ним знаком?

    @SharuPoNemnogu
    не язык плохой, программисты такие...
    Писать надо не для того, чтобы показать кому то, чтобы заценили, а для того, чтобы познать фреймворк во всех тонкостях. Можно и за пол дня набросать через gii Ваш мега сайт с характеристиками и блэк джеком не вникая во внутренние механизмы и фишки.

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

    Работодатель не будет смотреть весь функционал, что вы там на ваяете, мб обратит внимание на какие то интересные сложные моменты, показывающие Ваш скилл, но врядли. Код просят, чтобы посмотреть стиль оформления и наличие говнокода (лишние/не объявленные переменные например).

    Что написать? В основном это crm.
    Ответ написан
    1 комментарий
  • Какой функционал необходимо сделать на yii2, чтобы работодателю было понятно, что я с ним знаком?

    kawabanga
    @kawabanga Куратор тега Yii
    Тут уже все зависит от того, насколько подкован работодатель.

    Если у работодателя нет опыта, то все сведется к тому:
    - Знаете? Покажите сайты которые делали. Хорошо, вы приняты.

    Если работодатель подкован(с вами общается программист), то смотреть будут исходя из того, что ищет работодатель.
    Возможно вас попросят показать кусок кода, или попросить доступ к проекту.
    Если кратко, то в первую очередь я бы обратил внимание на:
    1) Изменяли ли вы VEndor. Без шуток, но до сих пор встречаются такие люди.
    2) Используете ли вы миграции.
    3) используете ли вы хелперы языка на полную, а не пишите через $_GET['param'] и другие стандартные функции языка PHP.

    ... 4) тут еще много всякого, в том числе и красота кода, и полноценное использование MVC.
    5) отдельно висят тесты. если человек овладел ими и пишет сначала тесты, то можно с уверенностью сказать, что по всем предыдущим пунктам он прошел.

    Опять же, знание фреймворка сводится к тому, что вы знаете, в каком месте читать мануал по тому или иному пункту. И как пишутся основные вещи.
    Ответ написан
    Комментировать
  • Куда развиваться и как профессионально расти как php программист в маленькой фирме?

    @HellWalk
    Но хочется прокачивать свои скилы

    Хотите - прокачивайте. Ведите список тех знаний, который хотите подтянуть - и выполняйте его постепенно.

    Я уже 1.5 года как программист в маленькой фирме

    Возможно стоит сменить компанию, поработать в другой команде. Не рекомендую на старте карьеры сильно засиживаться на одном месте - надо набираться опыта в разных командах, смотреть как налажен процесс в тех или иных компаниях.
    Ответ написан
    Комментировать
  • Куда развиваться и как профессионально расти как php программист в маленькой фирме?

    @neu3y
    Кто мешает делать очередной новый проект под изученным фреймворком.
    Пока не начнешь это делать на практике - не повысишь квалификацию.
    Ответ написан
    1 комментарий
  • Куда развиваться и как профессионально расти как php программист в маленькой фирме?

    p00h
    @p00h
    Фехтовальщик-стропальщик
    Комиты в любой понравившийся open-source проект.
    Ответ написан
    3 комментария
  • Куда развиваться и как профессионально расти как php программист в маленькой фирме?

    Maksclub
    @Maksclub Куратор тега PHP
    maksfedorov.ru
    Взгляните на рынок -- куча крутых нагруженных сервисов делается в мире.

    Чтобы ответить себе же, ответьте мне (я расту, мне интересно):
    - пишете ли вы тесты? TDD? DDD?
    - делаете ли сервисный слой?
    - следуете ли GRASP и SOLID?
    - есть ли опенсорсное что-либо? (например делали что-то для того же Symfony?)
    - оптимизировали ли вы огромные нагрузки?
    - упирались ли в пределы php и выносили ли отдельные элементы системы на др языки?
    - обучали ли вы ребят (с нуля, хорошему коду и практикам)?
    - занимались ли международными проектами?
    - запили ли что-нибудь свое, что стало популярным?
    - участвовали ли в конференциях?

    Если везде да -- скажите, что это за маленькая фирма, в которой так можно вырасти?

    Короче -- сделай список, в чем слабоват, что бы ты хотел -- и лупи силой железобетона по этим точкам!
    Ответ написан
    1 комментарий
  • Как выпилить компоненты (doctrine, twig) из symfony?

    BoShurik
    @BoShurik Куратор тега Symfony
    Symfony developer
    Отказаться от использования "symfony/symfony" и подключать конкретные компоненты, которые необходимы

    Рекомендую посмотреть в сторону Symfony Flex, он как раз создан для решения этой проблемы
    Ответ написан
    Комментировать
  • На каком этапе лучше начинать изучать паттерны проектирования?

    Паттерны имеет смысл учить после 1-2 лет разработки.
    Хорошее место для старта - https://metanit.com/sharp/patterns/ (знаю их наизусть)

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

    Сначала учимся ходить, потом бегать.

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

    Это мое ИМХО.
    Ответ написан
    1 комментарий
  • Где можно заработать на создании сайтов?

    Начинал 2 года назад на freelance.ru, знал только html+css, сразу же пришлось изучать JS, хоть немного PHP и работу движков (wordpress). Сейчас работаю с людьми, у которых есть стабильный поток заказов. В месяц минимум 35-40к рублей выходит.

    По поводу оплаты на фрилансим: что в этом плохого? Вас снабжают вполне адекватными заказами. На любой фриланс бирже (кроме разве что апворка, как там - я не знаю) есть понятие бизнес-аккаунта, с которым можно отписывать по любым заявкам, иначе - 2-3 заявки в день.

    Платить придется в любом случае.
    Ответ написан
    4 комментария
  • Где можно заработать на создании сайтов?

    @awdemme
    Вполне. Я продал 2 статических сайта. Хотя специализируюсь вообще на других вещах.. Один за 30 000 рублей, потом апгрейдил его еще раз за 30 000. Второй за 15 000 потом доработал его еще за 10 000.

    Насчет платить - тут все понятно.
    Если вы постоянно работаете - для вас эти суммы копейки.
    Ну а для "чисто для опыта", конечно дорого.
    Попробуйте Upwork. Там даже на бесплатном тарифе заказов полно.
    Ответ написан
    33 комментария
  • Нужно ли регистрировать Twig Extensions в конфиге services.yml? У меня работает и так. Новая фича или баг?

    BoShurik
    @BoShurik Куратор тега Symfony
    Symfony developer
    В версии 3.3 присутствует PSR-4 service discovery и autowire и autoconfigure опции которые автоматически регистрируют сервисы, резолвят зависимости и конфигурируют теги
    Вот код, который за это отвечает: https://github.com/symfony/symfony-standard/blob/3...

    Я бы рекомендовал использовать эти возможности, они сильно ускоряют разработку. Из минусов: проседаение в скорости генерации страниц в дебаг режиме из-за перегенерации контейнера.
    Ответ написан
    Комментировать
  • Что такое SONATA PROJECT?

    lazalu68
    @lazalu68
    Salmon
    Не знаю насколько я правильно понял, но Sonata-project это вроде бы просто набор полезных инструментов и пакетов (плагинов) написанных с использованием Symfony. Даже на офе так написано - "A set of several rich open source bundles based on Symfony".

    Вот например layout manager из sonata-project, а вот SEO-генератор. То есть если Symfony это фреймворк, то Sonata-project это набор готовых компонентов для Symfony. Вы можете взять Symfony и сделать сайт с нуля, а можете взять Symfony и сделать сайт из компонентов Sonata-project, это сэкономит много времени.

    Не вижу особого смысла что-то сравнивать, но если хотите, то в своей сфере похожими явлениями могут считаться Vue и плагины для него: можете взять Vue и писать на нём с нуля, а можете построить фронт с помощью Vue и плагинов для него.
    Ответ написан
    1 комментарий
  • Стоит ли изучать Symfony?

    kzakhariy
    @kzakhariy Автор вопроса
    PHP Developer
    Спасибо всем за ответы! Еще нашел классные уроки , но платные https://knpuniversity.com/tracks/symfony
    Ответ написан
    Комментировать
  • Как правильно организовать и создать проект на Symfony 3?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Комментировать