• Какую литературу по back-end посоветуете?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Сэм Ньюмен «Создание микросервисов»
    Ответ написан
    Комментировать
  • Что нужно освоить веб разработчику чтобы облегчить себе жизнь?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Редакторы:
    * phpStorm
    * vim

    Языки:
    * bash
    * SQL

    VCS:
    * git

    Сервисы очередей:
    * RabbitMQ
    * ZeroMQ
    * Beanstalktd

    Кэш сервисы:
    * Memcached
    * Redis

    PHP:
    * PHPUnit
    * Symfony
    * Doctrine

    Кодстайл:
    * PSR-0, PSR-1,...
    * PHP_CodeSniffer
    * JSCS

    OC:
    * CentOS
    * Debian

    Система запуска демонов:
    * supervisord

    Виртуализация:
    * Vagrant
    * VirtualBox

    Системы сборки:
    * grunt
    * gulp

    Web сервера:
    * nginx
    * apache
    Ответ написан
    4 комментария
  • Как запустить множество php скриптов одновременно?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Ответ написан
    Комментировать
  • Как исключить из регистрации временную почту?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Комментировать
  • Знак неравенства в mysql?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    IS NOT
    Ответ написан
    Комментировать
  • Как определить константы для Entity?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Можете заюзать подход: ValueObject. Это класс с конструктором и одним геттером. Все что он умеет - содержать в себе 1 значение.

    В энтити вы пишите сеттер с тайп хинтингом на VO. При этом в поле энтити записываете значение из vo. В геттере вы создаете новый инстанс VO на основании значения.
    Ответ написан
    Комментировать
  • Что означает return $this?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Вернуть инстанс текущего класса, удобно для чейнинга:
    $this->a()->b();
    Ответ написан
    1 комментарий
  • PHP, нормально ли на каждый запрос открывать коннект к MySQL, делать SELECT и закрывать коннект? Если нет, то как избежать?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Под чаты php - не лучший выбор, смотрите в сторону nodejs.
    Конкретно историю пишите в redis, а далее отдельным вызовом - в БД (если бизнес задачи этого требуют).
    Ушатывать БД только потому, что можете - это плохая идея.
    Ответ написан
  • Проверка данных. Насколько целесообразно делать так?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    false в вашем случае - это что-то пошло не так. Это не информативно. Используйте исключения.

    Что касается проверок - их не достаточно.
    Обязательно проверяйте типы аргументов для простых типов, для обьектов - лучше тайп хинтинг. Например что произойдет, если вместо массива вам влетит обьект?

    Могу порекомендовать либу для быстрой валидации аргументов: https://github.com/ko-ko-ko/php-assert
    В вашем случае проверка будет такая:
    /**
     * @param array $array
     * @param int   $uid
     * @throws InvalidArgumentException
     * @throws InvalidArrayException
     * @throws InvalidIntException
     * @throws InvalidIntOrFloatException
     * @throws InvalidNotEmptyException
     * @throws InvalidNotObjectException
     * @throws InvalidRegexpPatternException
     * @throws InvalidStringException
     * @throws NumberNotPositiveException
     * @throws StringNotMatchRegExpException
     */
    public function validChangeData($array, $uid)
    {
        Assert::assert($array, 'array')->isArray()->notEmpty();
        Assert::assert($uid, 'uid')->int()->positive();
        
        if (!array_key_exists('email', $array)) {
            throw new \InvalidArgumentException('Argument "$array" has no element "email"');
        }
        
        $email = $array['email'];
    
        Assert::assert($email, 'email')->string()->notEmpty()->match(
            '/^[a-z0-9](([_\.-]?[a-z0-9]+)*){0,19}@([a-z0-9]([_-]?[a-z0-9]+)?\.){1,3}[a-z]{2,6}$/i'
        );
    
        $this->updateUserData($array, $uid);
    }
    Ответ написан
  • Как изменить определенный vendor в symfony?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Что вам мешает отпочковаться от той либы и переопределить уже в вашей то, что не нравится?

    Как вариант можете написать пул реквест авторам, что бы они включили ваш код себе.
    Ответ написан
    Комментировать
  • Node.js как замена PHP?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Нода хороша для задач, завязанных на событийную модель. Под задачи, с последовательным выполнением ноду лучше НЕ брать.
    Пхп хорош под задачи web, не требующие хранения состояния (или с внешним хранилищем под сессии на пример) язык идеален.

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

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    зря вы так, не стоит забирать у ребенка детство. Даже, если он будет уметь программировать в 7-9 лет - ни как не скажется на его трудоустройстве в будущем. Этому занятию нужно посвящять время ПОСТОЯННО, так как область развивается семимильными шагами. Новинка сегодня - через год уже никому не нужна. Те технологии что он сейчас выучит - ему не пригодятся (за исключением разве что основных паттернов).
    Ответ написан
    Комментировать
  • Объясните человеческим языком, что такое веб-фреймворк на языке php?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Смогу ли я на фреймворке писать свои модули для моей CMS

    Если ваша CMS написана на фреймворке - да. Вполне возможна и частичная интеграция, но это путь боли.

    Наверняка не в одном фреймворке нет функции анализа собственного контента по принципу поисковых роботов.

    Фреймворк - это каркас для построения приложений. Он не решает бизнес задачи, вместо этого - технические.

    Не помешает ли мне фреймворк создавать такие модули из-за своего ограниченного функционала.

    Может помешать только в случае, если принципы принятые в фреймворке противоречат принципам в вашем проекте. Это возможно только если вы явно выбрали не тот фреймворк. Например: для работы с БД у вас во всю используется Doctrine2, вы выбираете фреймворк yii2 и частично переходите на его ActiveRecord - это приведет к большим проблемам.

    Смогу ли я совершенствовать любой модуль фреймворка (например добавление комментариев) под свои нужны не мешая его обновлению.

    Да, форкаете фреймворк, публикуете форк в композере и пишите там все что хотите. При обновлении фреймворка - вливаете изменения в свой форк.

    Или придется ли мне все переписывать с выходом новой версии, как это приходится делать на CMS типа DLE.

    Если у вас зависимость в композере только с последней версией фреймворка - сами себе злобный буратино)). Указывайте фиксированную и обновляйтесь по собственному желанию, либо вовсе не обновляйтесь.

    На сколько я буду зависеть от выхода новых версий?

    Зависимость от новых версий фреймворка - полностью на вас. Как напишите так и будете зависеть))

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

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

    Можно ли будет постепенно, не нарушая работу сайта, перенести собственные CMS на фреймворк учитывая то, что в них десятки модулей, собственные админ панели и т.д.

    Да

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

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

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Хуки можете сделать так: получаете список всех зарегистрированных функций, фильтруете их по названию, те что подошли - выполняете.

    Но это путь в никуда и так делать не стоит.

    На счет кода до и после - очень странный кейс и тоже оооочень хреновый, так делать нельзя.

    Получаете список токенов через token_get_all далее находите вызов конкретно вашей функции то, что до и после конкатенируете. Далее выполняете то что вам надо и в eval.

    Но еще раз это пример ужасного подхода и так писать нельзя.
    Ответ написан
  • Как сделать древовидную структуру комментариев?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Погуглите: рекурсия, вывод/обход дерева
    Ответ написан
  • Идеальный бриф - миф или правда?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    У сайта визитки бриф - несколько страниц. У яндекса - несколько книжных шкафов. Не сравнивайте)))
    Ответ написан
    Комментировать
  • Зависимость цены создания сайта от движка?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Жуть какая, вы еще и готовым языком воспользовались, да еще и веб сервером и субд скорей всего, на уже написанной операционной системе.

    Не берите дурного в голову и тяжелого в руки. Если результат заказчика устраивает - все ок.
    Ответ написан
    Комментировать
  • Почему в PHPstorm созданный index.php не является php файлом?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Я надеюсь это не кириллицей "р" написано?)))
    Ответ написан