Задать вопрос
  • Как лучше избежать ошибки redeclare?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Внутри функции объявлен класс,

    Что что?

    Если я класс вынесу из функции она ведь перестанет его видеть?

    Что-то? В PHP все, функции, классы и прочее регистрируются в глобальной области видимости.

    Функция же видит переменные либо только принятые, либо объявленные внутри неё?

    классы и функции это не переменные.

    Как правильно спроектировать такой случай? Переделать класс в функцию тоже?

    имеете в виду объект? Если так то да.
    Ответ написан
  • Как отправлять защищенный/шифрованный POST запрос между двумя серверами?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    вы всегда можете использовать свой сертификат для организации шифрованного соединения. Это есть и в PHP и в Node.js. Гуглить - TLS в контексте того что вы используете.

    Хороший пример - организация работы с серверами APNS (Apple push notifications). Можете посмотреть как реализован клиент для оного, они есть и для ноды и для пыха.

    Но поскольку речь идет о POST запросах, то все сводится к старому доброму HTTPS со своими сертификатами.
    Ответ написан
    Комментировать
  • Что надо знать хорошему php разработчику?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    но не могли бы вы дать список

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

    В целом же знание алгоритмов на начальном этапе вам не понадобится, вы просто должны понимать как строить алгоритмы. Я вот Кормена так и не дочитал... Тут суть в том что на PHP редко пишут что-то, где важна скорость вставки или поиска, обычно все сложное делается на уровне базы данных. Потому PHP разработчику остается только сформировать запрос в базу и получить ответ. Больше работы именно по архитектуре самого приложения.

    затем начну изучать базы данных и буду понимать что такое CGI,

    CGI не трогайте, это весьма старая штука. Просто разберитесь с SAPI (Server API) и примерным флоу что происходит между приходом HTTP запроса на сервер и вызовом PHP с уже заполненными суперглобальными массивами. Ну и да, с самим HTTP тоже разберитесь сначала, что бы понимать что такое куки и как они передаются с клиента на сервер и обратно, что такое сессии, как получить тело запроса и т.д.

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

    p.s. Еще рекомендую почитать чего по управлению проектами, по методологиям разработки. Ознакомьтесь с XP (причем лучше читать на английском), почитайте про технический долг и т.д.
    Ответ написан
    9 комментариев
  • Стоит ли высылать заказчику подписанный договор NDA?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Отпралять свой паспорт

    С вас просят только ксерокопию. И коль уж человек требует NDA подписанный, то вы должны ему предоставить какой-то документ, с которым он, в случае нарушения NDA пойдет в суд.

    habrahabr.ru/post/88058 - хороший материал на тему, в комментариях так же много полезного.
    Ответ написан
    Комментировать
  • Каким еще способом можно внести изменения в сторонний бандл?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    относительно правильным будет отнаследоваться от модели предоставляемой FosUserBundle и просто в конструкторе вызывать этот метод.
    Ответ написан
  • Как вести логирование запросов, действий в отдельную таблицу?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    CQRS + Event Sourcing
    Ответ написан
    Комментировать
  • Как использовать наследование Bundle для перезаписи частей bundle?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    касающиеся наследование бандлов.

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

    Само наследование достигается строчкой "return 'FOSUserBundle';"

    Да, таким образом вы говорите с каким еще экстеншеном ядра связан ваш экстеншен, тогда кернел будет обрабатывать все в нужном порядке.
    Ответ написан
  • Как сделать .deb пакет?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Комментировать
  • Почему github, а не gitlab?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ведь есть gitlab?

    gitlab в основном используется для реализации своих приватных репозиториев и только. Для всего остального есть github.
    Ответ написан
    5 комментариев
  • Какой выбрать монитор для повседневной работы, 27"?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    LG 27mp67 - 1080p
    Samsung s27d590pl - 1080p
    samsung s27e390h - 1080p

    для 27" нужно минимум 1440p (разрешение 2,560 x 1,440)
    Ответ написан
  • Как работают простые фильтры в Ангуляре?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    оба делают только одну половину работы, а как обьеденить не знаю

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    в дополнение к ответу Sayber ⏰, есть только два разумных выбора: ActiveRecord vs Data Mapper. Все остальное - без разницы, Laravel 5 (ниже не смотрите), Symfony... с архитектурной точки зрения все едино, различия только в стандартной комплектации. У симфони это доктрина, которая исповедует несколько другие подходы.

    Но поскольку оба эти фреймворка модульны, все можно заменить, можно сделать симфони с AR и Laravel с Doctrine.
    Ответ написан
    1 комментарий
  • Как вы пишите тестируемый код?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    соответственно при тестировании необходимо обернуть его в Mock

    Ну как бы это логично, при юнит тестировании все, кроме того что мы непосредственно тестим, должно быть заменено моком/стабом.

    Писать в каждой модели конструктор?

    Что вы понимаете под "модель"? Ваши бизнес-объекты? У них в конструкторе должно быть только то, что им нужно.

    а если источников будет много

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

    User::model()->prepareBuy(new Order, New Profile, $userId)


    Прочитайте эту строчку кода, и скажите что тут происходит, ибо я не могу этого понять.

    Ну и да, помимо внедрения зависимостей в конструктор, есть еще такая неплохая штука как double dispatch, когда нужные сервисы передаются как аргументы методов, которым они нужны. Так наш класс не зависит от непонятных вещей и таким образом мы все можем спокойно тестить.
    Ответ написан
    2 комментария
  • Как отправлять логи ошибок PHP на почту?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ответ написан
    Комментировать
  • Есть ли autoprefixer для css на php?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    аналогов нет и не нужно, это уже устоявшаяся практика использовать тулчейн для ноды для сборки фронтэнда, нечего плодить реализации, одну реализацию такой довольно критичной вещи как autoprefixer поддерживать сильно проще.
    Ответ написан
    3 комментария
  • Что такое рецепты и провайдеры в angular.js?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    что за рецепты создания обьектов?

    Подозреваю что речь идет о фабриках. Сожгите эту книгу (или что вы там читали).

    Если да, то что посоветуете вкурить?

    Википедию и учите JS.

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Flexbox-ы, просто, эффективно, на css, без разницы знаете ли вы размеры блока или нет...
    Ответ написан
    2 комментария
  • Как вывести результаты из связанной таблицы?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    У меня есть таблица:

    Не таблица, а сущность. Doctrine исповедует принцип persistence ignorance.

    Зачем так сложно то? Настраиваем каскадный персист для связи и наш код упрощается до:

    $notification = new FcsNotificationEA();
    // добавляем 3 аттачмента
    $notification->add(new Attachment());
    $notification->add(new Attachment());
    $notification->add(new Attachment());
    
    $this->notificationsRepository->add($notification); // внутри add происходит persist
    
    $this->get('doctrine.orm.entity_manager')->flush(); // коммитим изменения в базу
    
    return $this->render('some_template.twig', compact('notification'));


    p.s. все же подумайте о том что бы нормально именовать объекты... ибо не понятно что это такое.
    Ответ написан
  • Как правильно реализовать авторизацию symfony 2?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    что сие надо делать с помощью FOSUserBundle.

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

    Поля имя фамилия появились, а поле группы нет. почему?

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

    При регистрации пользователя ему по умолчанию не присваивается никакой роли, группы и нельзя указать имя и фамилию

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

    как заменить стандартные шаблоны своими заранее сделанными.

    Читаем документацию к fos user bundle, там все это есть. Это одна из самых базовых нужд разработчика, так что, как понимаете, это можно сделать прописав в конфиге пути к шаблонам, которые вы хотите юзать.
    Ответ написан
    4 комментария
  • Почему на отрабатывает $watch в директиве?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    скаляры в скоупах не наследуются, так как передаются по значению. Варианты, хранить данные в объекте, они передаются по ссылке а ссылки наследуются.
    Ответ написан