• Как в symfony2 в формах сделать images checkbox?

    BoShurik
    @BoShurik Куратор тега Symfony
    Symfony developer
    StackOverflow
    Вам надо переопределить виджет для поля photos
    Ответ написан
    Комментировать
  • Какие перспективные ниши в IT откроются в ближайшие 2-3 года?

    @JohnJon
    Можно точно сказать какой ниши придёт конец. Это разработке под мобильные операционные системы - IOS и Android. В данный момент мы наблюдаем пик этой истерии. Каждый считает нужным иметь клиент под эти операционые системы, хотя никакой практической необходимости в этом нет. Это мода, которая скоро пройдёт.
    Ответ написан
    1 комментарий
  • Веб приложение на Symfony Components, как правильно?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    1) По поводу моделей.
    Symfony не пропагандирует MVC и слоя такого как модель нет

    На самом деле, Symfony хотя и не пропагандирует MVC (потому что есть MVVM, например), но легко может использоваться с MVC, всё для этого в ней есть. Единственно чего нет в Symfony - нет готового решения моделей. Почему - потому как разные ОРМы будут использовать разные решения. Но я рекомендую использовать Доктрину, в ней вообще не нужно думать о сложных моделях - просто делайте plain-php класс для объекта, без специальных базовых классов для модели.
    class Person {
        public $firstname;
        public $lastname;
    }

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

    В общем, раз хотите учиться - берите Doctrine2. Возможно, он работает медленнее, но зато даёт очень удобное создание моделей.

    2) По поводу шаблонизатора. Берите Twig. Он прекрасен. Удобно создавать свои функции, легко наследовать и переопределять блоки.

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

    4) Авторизацию с аутентификацией тоже можно использовать симфониевскую - компонент Security.

    5) Не забудьте взять компоненты DependencyInjection, Config, OptionsResolver, Yaml. Подумайте ещё о Routing, Translation, Debug, EventDispatcher, Intl и Validator. И тогда у вас получится Symfony Framework :)
    Ответ написан
    5 комментариев
  • Как найти наставника чтобы изучить Laravel?

    winbackgo
    @winbackgo
    Самое простое - поставить задачу и решить ее на FrameworkName. Если фантазии для задачи не хватает ищем на фрилэнс биржах. Задача должна быть не слишком сложной, но это должен быть полноценный сайт.
    Ответ написан
    Комментировать
  • Как лучше построить модуль Транзакции в symfony?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    0) Никаких TransactionBundle. Вы эту логику не сможете реюзать, а значит нет смысла делать бандл. Почитайте symfony best practice. У вас должен быть один AppBundle и все, больше ничего. Вы можете пытаться выносить какие-то части инфраструктуры, которая не привязана к бизнес логике в отдельные бандлы для последующего реюза, но бизнес логику приложения реюзать не выйдет.

    1) почитайте про event sourcing. Этот способ хранения данных идеален для платежных транзакций, собственно в банках и т.д. этот подход и используют десятилетиями, да даже та же база данных хранит лог транзакций.

    2) уберите flush их сервиса и вынесите его в контроллер. flush коммитит транзакцию в базу, и нам надо это делать когда мы завершили работу с оными а не "где-то посередине".

    3) оборачивать это добро в еще одну транзакцию глупо, потому что... доктрина и так сделает транзакцию. В любом случае по хорошему это надо делать в декораторе.

    4) call_user_func_array в вашем случае - пример плохого решения.

    5) по умолчанию persist использовать нужно только для тех сущностей, которые мы только что создали (в нашем случае - транзакция), либо тех которые мы явно вынули из unit of work (а у нас нет вызова $em->detach).

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

    7) сервисы менеджеры - отстой. Называйте сервисы нормально.

    8) вместо кучи сервисов можно ввести разные объекты транзакций. Например FundTransaction, IncomTransaction и т.д. У вас же в сервисах почти весь код дублируется. А так можно было бы всю логику с этими операциями сложить прямо в сущности.

    9) НИКАКИХ DIE! даже для дебага.

    public function transactionAction(Request $request)
    {
        $data = $request->request;
        $transactionDTO = new TransactionDTO(
             // вообще я бы тут просто ID пользователя возвращал... но я упорот по изоляции приложения от UI
             $this->get('security.token_storage')->getToken()->getUser(), 
             $data->get('sender_account_type'),
             $data->get('recipient_account_type'),
             $data->get('amount')
        );
        // с исключениями разберется фронт контроллер
        $this->get('app.transaction_processor')->process($transactionDTO);
        // вот теперь сохраняем изменения
        $this->get('doctrine.orm.entity_manager')->flush();
    
        return new Response(null, 201); // создали новую запись в журнале транзакций
    }


    class TransactionProcessor
    {
          private $transactionsRepository;      
    
          public function __construct(TransactionRepository $repository)
          {
               $this->transactionsRepository = $repository;
          }
    
          public function process(TransactionDTO $dto)
          {
                // create это статический метод фабрика у абстрактного класса Transaction
                // читать шаблон проектирования "абстрактная фабрика".
                $transaction = Transaction::create($dto->getSender(), $dto->getRecipient(), $dto->getAmount());
                
                $this->transactionsRepository->add($transaction);
          }
    }


    дальше мне по логике не понятно, почему у вас одна транзакция на двух человек, полюбому у sender-а будет один тип транзакции а у ресивера другой. Можно запомнить кому мы чего передавали и только.
    Ответ написан
    7 комментариев
  • Курсы для фронтендера\дизайнера по завершению которых выдают сертификат (удаленно)?

    HoHsi
    @HoHsi
    Что-бы резюме выглядело солидно, не занимайтесь дро***ом с сертификатами.
    1) Заведите GitHub аккаунт и начните писать открытые библиотечки / сайты. (пусть и корявые, но со временем...)
    2) На том же гите работайте над чужими проектами. Форкайте, пытайтесь запилить свой мердж.
    3) Перестаньте уже заниматься х***ней с сертификатами / тренингами / блицами. Работайте, блеять. Портфолио будет лучше смотреться от реальных работ, а не от макулатуры.
    4) Запилите блог (!!! когда уже сами будете понимать в своей области). Пишите в него статьи, переводы, гайды. Это не столько для окружающих, сколько для вас самих. Ведь как известно ни что так не закрепляет знания. как обучение ими окружающих.

    Ваш кэп.
    Ответ написан
    Комментировать
  • Что плохого в чистом php?

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

    opium
    @opium
    Просто люблю качественно работать
    слишком медленно пишите
    фреймворк делает за вас пол работы, а то и больше.
    когда прототип на чистом пхп программист делает неделю, а на фреймворке за день, вывод очевиден, вас просто не выгодно нанимать.
    Ответ написан
    Комментировать
  • Rак правильно организовать списание баланса?

    R0dger
    @R0dger
    Laravel/Yii/2 AngularJs PHP RESTful API
    Если у Вас операция НЕ АТОМАРНАЯ, то нужно обернуть в транзакцию
    Частично тут описано - php.net/manual/ru/pdo.transactions.php
    Ответ написан
    2 комментария
  • Как из JS в PHP хранить данные для использования (Cookie не подходят)?

    1. AJAX не допустим - лишняя нагрузка ради одной переменной не имеет смысла

    Мы же в 2015, да?
    Ответ написан
    5 комментариев
  • PHP 7.0 - гвоздь в гроб строгого типизирования данных?

    @javanub
    В ошибке сказано, что это void и он ничего не должен возвращать.
    Ответ написан
    5 комментариев
  • Как нужно делать рассылку со своего сайта (сервера)?

    @xtreme
    Снимаю порчу по SSH :)
    1. Изучить рекомендации по рассылкам у крупных почтовых сервисов (Google, Yandex, Mail.ru). При подготовке писем для рассылки строго следовать их рекомендациям.
    2. Зарегистрироваться в postmaster.yandex.ru, postmaster.mail.ru, чтобы следить за ходом рассылки писем.
    3. Отлавливать недоставленные письма, убирать их из листов рассылки, дабы не мусорить.
    4. Сделать механизм отписки от рассылки (это один из критериев пункта 1), причем 100% работающий в один клик.
    5. Мониторить нажатие кнопки "Спам" в вышеуказанных почтовых сервисах, также сразу исключать их из будущих рассылок.

    1к подписчиков - это мелочь. Можешь пробовать отсылать сразу все письма на свой почтовый релей (для 1к хватит и одного релея), даже почти дефолтно настроенный MTA будет рассылать с нужными интервалами.

    Обязательное условие - соблюдать все почтовые правила и не пренебрегать цифровыми подписями - SPF, DKIM, DMARC, правильные записи в DNS (A, MX, PTR).
    Ответ написан
    10 комментариев
  • В чем ошибка AJAX или PHP?

    @vGrabko99
    html, css, js, php, golang, mysql
    как минимум в говнокоде. Вам тут не кто его разбирать не будет
    Ответ написан
    1 комментарий
  • PHP7 и foreach. Коварное изменение?

    romy4
    @romy4
    Exception handler
    Приведённый код будет нормально работать в php7.
    Ответ написан
    3 комментария
  • Yii2 как проделать дырку в id модели?

    @sunrails
    Добавьте поле sort_order в таблицу и перестраивайте сортировку как душе угодно. А проделывать "дырку" совсем плохая идея.
    Ответ написан
    2 комментария
  • Судебная тяжба с ростелеком, есть советы?

    eapeap
    @eapeap
    Сисадмин, Беларусь
    Была похожая ситуация - по запросу провайдер выдал подробную распечатку, с каких IP сколько и в какое время было скачано. Пришли к соглашению с провайдером по снижению суммы, выдали пи;%№ подозреваемым сотрудникам и сменили тариф.
    Ответ написан
    2 комментария
  • Как вы освоили шаблоны проектирования?

    27cm
    @27cm
    TODO: Написать статус
    Вот вам 12 маленьких задач на 12 паттернов:
    github.com/zfcampus/zendcon-design-patterns

    1. Открываете папку с паттерном.
    2. Читаете README.md с описание задачи.
    3. Открываете exercise.php и пытаетесь решить задачу, применив соответствующий паттерн.
    4. При необходимости вспоминаете теорию: github.com/domnikl/DesignPatternsPHP
    5. Сверяетесь с решением в solution.php.
    Ответ написан
    7 комментариев
  • С чего начинается CI?

    MaxDukov
    @MaxDukov
    впишусь в проект как SRE/DevOps.
    однозначно начните с GIT. и очень советую посмотреть статью про модель ветвления в гит - дабы не изобретать велосипед.
    Ответ написан
    Комментировать