• Есть ли какие-то глобальные отличия symfony от django?

    voronkovich
    @voronkovich
    1. Symfony - компонентный фрейморк, Django - нет.

    Это значит, что вы можете использовать только необходимые компоненты Symfony в вашем приложении.

    2. У Symfony нет ORM, у Django - есть.

    Обычно для Symfony используют Doctrine, похожую на SQLAlchemy т. е. DapaMapper. ORM поставляемая в Django - это ActiveRecord.

    3. В Symfony все завязано вокруг DI-контейнера. В Django этого нет.

    4. Symfony - это микрофреймворк, Django - нет.

    5. Django Reinhardt - джазовый гитарист, SymFony - это просто Sensio Framework.

    Как видите, эти фреймворки похожи друг на друга как Python и PHP.
    Ответ написан
    2 комментария
  • Нужно ли регистрировать 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...

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

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    Symfony не имеет никакого отношения к DTO и не накладывает каких-то требований на реализацию.
    Ответ написан
    Комментировать
  • DTO, как готовить в симфони?

    DexterHD
    @DexterHD
    Software Engineer, Teamlead, CTO
    В случае с PHP, DTO - ни что иное, как обычный класс без поведения (т.е. имеющий только свойства). Его можно без проблем сериализовать и десереализовать в любой удобный формат для передачи по сети, будь то стандартный `serealize` или `json_encode`
    Ответ написан
    2 комментария
  • Дает ли строгая типизация в PHP 7 прирост производительности?

    Начал писать ответ комментарий https://toster.ru/answer?answer_id=937197, но ответ получился большим и поэтому решил поместить его отдельно.

    DevMan , я попробую уточнить ваше утверждение, что немного снижает.
    На самом деле, при использовании скалярных тайпхинтов снижается производительность вызова функций, поскольку возникает некий дополнительный оверхед на валидацию аргументов и приведение значений к нужным типам (если не используется strict_types). Но! Так как внутри функции значения аргументов уже приведены к нужным типам, то при использовании аргументов не происходит неявного приведения типа.
    Поясню на синтетическом примере:
    function foo($x) {
        $result = 0;
        for ($i = 0; $i < 100; $i++) {
            $result += $i + $x;
        }
        return $result;
    }


    Если вызвать эту функцию так: "foo('123')", то в таком случае внутри цикла аргумент будет неявно приводится к целому числу 100 раз. Если вызвать функцию так: "foo(123)", то в таком случае аргумент не будет внутри цикла приводится к целому числу. Очевидно, что второй вариант более производительный:
    ~$ time php70 -r 'function foo($x) { $result = 0; for ($i = 0; $i < 10000000; $i++) { $result += $i + $x; } } foo("123");'
    
    real    0m0.860s
    user    0m0.855s
    sys     0m0.005s

    ~$ time php70 -r 'function foo($x) { $result = 0; for ($i = 0; $i < 10000000; $i++) { $result += $i + $x; } } foo(123);'
    
    real    0m0.508s
    user    0m0.500s
    sys     0m0.008s


    В то же самое время, если добавить к аргументу скалярный тайпхинт, то тогда значение аргумента один раз будет приведено к тайпхинту и внутри функции уйдёт весь оверхед связанный с неявным приведением типа:
    ~$ time php70 -r 'function foo(int $x) { $result = 0; for ($i = 0; $i < 10000000; $i++) { $result += $i + $x; } } foo("123");'
    
    real    0m0.502s
    user    0m0.498s
    sys     0m0.003s

    ~$ time php70 -r 'function foo(int $x) { $result = 0; for ($i = 0; $i < 10000000; $i++) { $result += $i + $x; } } foo(123);'
    
    real    0m0.504s
    user    0m0.495s
    sys     0m0.008s


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

    Зато использование строгой типизации не даст запустить функцию в неконтроллируемом состоянии: когда функция ожидает на вход целое число, а по какой-то причине подсунули массив:
    $var = $_GET['foo'];
    bar($var);
    , для get-параметра foo=123 вызов будет корректным, а для foo[]=123 вызов функции приведёт к TypeError; для foo=abc тоже будет TypeError. Разумеется, этот пример сильно надуман и тут нужно использовать "нормальный" валидатор.
    Ответ написан
    1 комментарий
  • Как сделать авторизацию разных пользователей с одним логином?

    webinar
    @webinar
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Наверняка можно, но проблема у Вас не с Symfony, а с тем что логин - это идентификатор, который должен быть уникальным, не для Symfony, в принципе, а у Вас это не так.
    Если это результат слияния двух сайтов, то стоит сделать 1 базу основной. И разрулить логику, что бы смотрела по обоим базам, но постепенно по мере логинов оставляло все только в одной.
    Ответ написан
    2 комментария
  • Разработка через pull-requestы?

    tema_sun
    @tema_sun
    Не нужен. Будет бардак.
    Ответ написан
    Комментировать
  • Как хранить клиентский JS-код в Mysql?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Код кладем в базу как есть, меньше читаем про загадочный код который может "повредить базу", больше про PDO и prepared statement. Все косяки могут всплыть только при выводе, если там будет какой-то кривой код - вся хрень произойдет на клиентсайде.
    Ответ написан
    Комментировать
  • Когда не использовать формы?

    e_svirsky
    @e_svirsky
    Web Developer
    Ну не используйте Symfony Forms для вашего случая если так не хотите. Можно и GET, POST параметры получать из суперглобальных массивов и не использовать объект $request которые уже отдаёт satinized данные.
    Имхо вопрос в вашем отношении. Сегодня у формы 2 поля, а завтра нужно еще 3, потом еще 2, и всё. Вам придётся рефакторить. Не понимаю, в чём проблема сразу заложить как нужно?
    Как по мне, в симфони формы вполне достойны.
    И не создавайте форму на лету в контроллере - это плохой тон. Лучше формы держать в отдельном классе а обработку при сабмите отдавать менеджеру. Таким образом контроллер не будет дёргаться при наращивании функционала, и не должен.
    Ответ написан
    1 комментарий
  • Как распараллелить процессы php?

    Pinsky
    @Pinsky
    Кофеиноникотиновая смесь в backend-код
    один поток собирает ссылки, складывает в очередь.

    Запускаете сколько нужно обработчиков, каждый из которых:
    1. достает одну запись из очереди
    2. собирает инфу
    3. сохраняет в бд
    4. возвращается к пункту 1.

    Если это дело бегает на одной машине - то можете использовать SysV очереди сообщений.
    Ответ написан
    Комментировать
  • Разделение внутри бандла?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    когда бандл большой но не на столько чтоб делать 2 бандла


    Читаем symfony best practice - у вас должен быть всегда только один бандл. AppBundle. Все остальные варианты бандлов - только для самодостаточных вещей, которые вы хотите реюзать между проектами. Причем как правило "в бандл" заранее не стоит это заварачивать а уже когда будет видно что получилось что-то реюзабельное.

    Далее, разделение по функциональности - дело хорошее. Вот только не стоит забывать, что контроллеры к приложению имеют весьма посредственное отношение, это просто UI. Имеет смысл разделять по слоям/зонам ответственности + по функционалу. так у нас может быть такая структура:

    Controller
        User
           UserController
    Entity
       - User
           - UserProfile
           - UserCredentials
           - User
           - UserRepository (только интерфейс)
       - Downloads
           - какие-то сущности


    Словом, делайте так, как вам удобно. Но лучше пусть в одной директории будет 10 файлов, чем если бы у нас было 5 директорий и по 1-2 файла в каждом.
    Ответ написан
    Комментировать
  • C чего начать изучение scala?

    denisftw
    @denisftw
    Вопреки распространенному мнению, Scala - достаточно простой в освоении язык. Описываю самый быстрый из известных мне способ (работает, если уже есть знания любого другого языка - C#, Ruby, PHP, Java - без разницы какого):

    1. Смотрим полуторачасовое видео здесь:

    https://www.youtube.com/watch?v=grvvKURwGNg

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

    2. Далее скачиваем бесплатно первую половину моей "Modern Web Development with Scala" (разделы "Language fundamentals" и "Functional programming" - около 40 страниц) отсюда:

    https://leanpub.com/modern-web-development-with-scala

    В этих главах как раз описываются вещи, которые используются 80% времени.

    3. После этого берем Play Framework и начинаем пилить свое Web-приложение. Для старта знаний хватит, а остальное можно освоить в процессе.

    Если кажется что не хватает знаний по синтаксису/стандартной библиотеке, то всегда есть книга Мартина:

    www.amazon.com/Programming-Scala-Comprehensive-Ste...

    Около 800 страниц, но в плане синтаксиса там есть почти все и читается она довольно легко. Есть еще "Scala for the Impatient" Хорстмана и "Programming Scala" (2-е издание) от O'Reilly, но на фундаментальность ни та, ни другая не претендуют.

    И еще. Я бы не стал на старте заморачиваться с известные курсом "Functional Programming Principles in Scala", который периодически крутят на Курсере. Курс действительно замечательный, но трудозатраты для начинающего будут просто огромными, а отдача - неочевидной.
    Ответ написан
    2 комментария
  • Какие есть преимущества у laravel5 перед symfony2?

    miraage
    @miraage
    Старый прогер
    Лично в моем случае:

    DI:
    + удобнее инжектить сервисы
    - нельзя инжектить переменные

    DB:
    + удобнее работать с Eloquent, чем с Doctrine
    + удобный QueryBuilder

    Console:
    + генераторы событий, моделей, миграций итд
    + tinker

    Validation:
    + море встроенных правил валидации
    + валидация в контроллерах через FormRequest

    Others:
    + мультиавторизация в нескольких вариантах из коробки
    + RBAC из коробки
    + более гибкий routing/middleware
    + хелперы
    Ответ написан
    8 комментариев
  • Какие есть преимущества у laravel5 перед symfony2?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега Laravel
    Если вы ощущаете себя в Symfony как рыба в воде, то ничего нового вам Laravel не даст - построен он на компонентах Symfony, архитектурные принципы те же. Только в Laravel всё это скрыто за удобными фасадами.

    С другой стороны, если вы понимаете Symfony, и вообще имеете приличный опыт разработки и голову на плечах, то вы больше времени на чтение ответов здесь потратите, чем на изучение Laravel.
    Ответ написан
    3 комментария
  • Что нужно знать, чтобы круто писать тесты на php для Symfony, Yii используя codeception?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Нужно знать php. Если хочется писать совсем круто, то еще codeception. Начните отсюда.
    Ответ написан
    6 комментариев
  • Как оптимизировать потребление оперативной памяти?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    Для начала проверьте, что вы выполняете код в среде prod. Среда dev ест значительно больше ресурсов.
    А дальше можно перейти на DQL без гидрации в объекты или вовсе на нативные запросы, которые ничего не возвращают в PHP, если сможете оформить запрос с такой логикой.
    Ответ написан
    2 комментария
  • Изучение Symfony2/Laravel, сколько времени потребуется?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    сколько примерно времени займёт период от начала изучения до первого собеседования

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

    На symfony2 в среднем проекты поинтереснее, так что я рекомендовал бы именно его. В любом случае переход laravel <-> symfony не является проблемой, ибо различия принципиальные там только в ORM идущей из коробки. Архитектура же этих фреймворков в целом схожа, разница в нюансах. Например в laravel мидлвэры как отдельная сущность, а в symfony они реализуются через события ядра, но суть та же. Еще нюансы с доктриной, эта штука довольно сложная и ее очень легко использовать неправильно, особенно с mysql. Но после того как разберетесь с ней возвращаться на всякие там active record-ы совсем не захочется. По сути это единственная полноценная ORM в php мире.

    Еще вне зависимости от выбора рекомендую ознакомиться с такими штуками как луковая/гексагональная архитектура, почитать чего по TDD и тестирование в целом. Кента Бэка например, Эрика Эванса.
    Ответ написан
    4 комментария
  • Как отключить SSH и потом включить через PHP?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Можете поступить по хардкору: удалять .ssh/authorised_keys для гостевого пользователя, через которого будет происходить авторизация. Саму авторизацию по паролю - запретить, порт sshd повесить на не стандартный. А по запросу - добавлять ключ этого пользователя. В такой ситуации sshd отключать нет смысла. + К тому настроить iptables на прием отправку только с доверенных ip

    Просто отключая sshd вы с вероятностью 99% выстрелите себе в ногу разрывным патроном
    Ответ написан
    Комментировать
  • 1С Битрикс - как установить какие компоненты должны отображаться при установке шаблона?

    Лично мне из вашего вопроса не понятно, что вы хотите.
    Документация по битриксу есть на их сайте. Там и как устроен шаблон и подробный мануал по их API
    Ответ написан
    Комментировать