Ответы пользователя по тегу PHP
  • Cordova, как авторизоваться на другом сервере?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Авторизацию по токенам сделать не получится.

    А придется. Ну или в куки пихайте токены, но это делает вас уязвимым к CSRF атакам, и что бы оградить себя от этого всеравно придется делать пересылку CSRF токенов.
    Ответ написан
    Комментировать
  • Чат на socket.Логика отправки сообщений?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Чем отличаются TCPсокеты (которые я сейчас использую) от WebSockets,что лучше?


    websockets - это протокол, который позволяет вам организовать соединение с сервером. websockets работают поверх TCP и это единственный способ открыть двусторонний канал с сервером (ну как... еще WebRTC предоставляет P2P каналы, но это чуть другая плюшка).

    откуда мы аяксом дергаем данные в скрипт.

    смысл тогда в сокетах?

    Можно ли обойтись без аякса,реализовать это через сокеты?

    websockets и есть ответ на ваш вопрос.
    Ответ написан
    1 комментарий
  • Почему мы не можем получить байт код от пхп?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    компилировать пхп в байт код?

    PHP компилится не в байткод а в опкоды, это своего рода ассемблер для виртуальной машины PHP. И возможность такую они дают - opcache, просто компиляция и хранение происходит по требованию. Иначе профит от PHP теряется (более быстрый цикл изменил - запустил). Эффект же от opcache ровно такой же, как если бы мы компилили все перед деплоем. Мы можем в конце концов прогреть кэш и тогда разницы не будет вовсе, но жить намного проще.

    В любом случае, пока PHP использует статическое выполнение опкодов разницы не будет. А если туда впилят JIT/AOT компиляцию, то тогда уже можно будет говорить о ускорении.
    Ответ написан
    Комментировать
  • Как по стандартам правильно оформлять шапку php файла?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    по стандартам - никак.

    в любом случае это обычно dock block через строчку после <?php, содержащее к какому пакету пренадлежит файл, информация об авторе + контактные данные а так же информация о лицензии.

    <?php
    
    /*
     * This file is part of the Symfony package.
     *
     * (c) Fabien Potencier <fabien@symfony.com>
     *
     * For the full copyright and license information, please view the LICENSE
     * file that was distributed with this source code.
     */


    Информация аля "tabstop=4" обычно пишется в файлики типа .editorconfig
    Ответ написан
    Комментировать
  • Существует ли API времени?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    www.geonames.org - по координатам.
    Ответ написан
    Комментировать
  • Какой чпу быстрее?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    смотря какого рода маршрутизация. В целом же это такая экономия на спичках (подозреваю что nginx будет чуть быстрее, но это будет сказываться вообще на все запросы к nginx а не только на те что к php) что можно смело забить и выбирать максимально удобный вариант. Пых скейлится лучше.
    Ответ написан
  • Как составить запрос mysql используя даные одной таблицы для выборки из другой?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Учим SQL а именно JOIN-ны.
    Ответ написан
    Комментировать
  • Кто должен оптимизировать сайт под SEO?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    описывать требования (в вашем случае список рекомендаций) - SEO специалиста (не пускать же их в код проекта? Хотя есть и такие).

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    1) все просто, не используйте git для деплоя (git pull на сервере), для этого есть другие штуки, капистрано, капифони и т.д.

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

    2) можно в bitbucket поставить действия на push хуки, что бы например дергать вашу CI-ку, там прогонять тесты (вы же пишите тесты?) и деплоить. Тогда что бы выкатить версию надо будет всего-лишь сделать git push, а дальше магия. Ну и опять же если мы разделили репозитории на отдельыне ориджены, мы так же можем контролировать кто может деплоить а кто нет.
    Ответ написан
    3 комментария
  • Где лучше обучиться и найти документацию?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    PDO

    PDO? PHP Data Objects?

    php.net/manual/en/book.pdo.php

    хотя в целом лучше взять готовый dbal, например doctrine/dbal

    семинары по ООП

    Есть книжки, есть лекции. Например есть неплохие лекции от Сергея Немчинского (пример), у него конечно по Java но суть от этого не меняется. Более того, почти вся стоящая литература ориентирована на Java, но спроэцировать эти знания на PHP проблемы не составляет.

    И с какого PHP фреймворка лучше начать обучаться?

    Ни с какого, сначала освойте PHP и ООП на базовом уровне. Потом освойте git, composer. Потом попробуйте тесты пописать (TDD попрактиковать еще можно, хорошо для обучения), всякие там phpunit/phpspec/peridot/etc. А уже потом можно... уже брать какой-нибудь фреймворк.
    Ответ написан
    1 комментарий
  • Использует ли кто ReactPHP в Production?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Я использую, полет нормальный (где-то пол года уже)
    Ответ написан
    2 комментария
  • Что быстрее PHP или Node.js?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Если вы пишите демон, можно взять ReactPHP и радоваться жизни, все асинхронненько, все на event loop, словом тот же node.js только на php.

    В целом же есть multi curl, stream_select и прочие радости жизни.
    Ответ написан
    Комментировать
  • Что такое static в ООП php?

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

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

    $foo = Singleton::instance();
    $bar = AbstractFactory::create('bar');
    $buz = Buz::fromArray([
        'many' => 'arguments', 'Buz' => 'has', 'private' => 'constructor'
    ]);


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

    Если рассматривать с точки зрения пораждающиз статических методов, нам так же надо знать кого создавать. И тут появляются два ключевых слова - self и static. Причем self равносильно написанию имени класса в котором наш статический метод находится и просто позволяет уменьшить дублирование. static же намного интереснее, так как оно указывает непосдерственно на тот класс, из под которого был совершен вызов. Скажем если у вас есть наследование вы можете запихнуть порождающий метод в базовый класс, и тогда узнать кого создавать в принципе не проблема.

    class Foo {
        public static function createWithSelf() {
             // равносильно new Foo();
             return new self();
        }
        public static function createWithStatic() {
             // а тут мы пока не знаем кто такой этот static
             $foo = new static();
        }
    }
    
    class Bar extends Foo {}
    
    $foo = Bar::createWithSelf(); // тут будет экземпляр Foo
    $bar = Bar::createWithStatic(); // тут будет экземпляр Bar
    Ответ написан
    1 комментарий
  • Документация к SOAP API. Нужна ли она и справедливо ли возражение о том, что WSDL достаточно?

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    скорее всего вам посоветовали грамотно проектировать БД, а не свою СУБД написать.

    10К запросов в минуту это всего-то 166 запросов в секунду. Далее уже вопрос идет - какого плана запрсы. Если простые селекты то любая сгодится. Ну а если не простые - то тут уже надо думать. Опять же все упирается в архитектуру вашей БД и что вы будете с ней делать.

    В целом потсгрес наиболее универсальный ответ, и не только потому что у него производительность норм и он хорошо скейлится горизонтально.
    Ответ написан
    7 комментариев
  • Какие средства вы используете при работе с backend??

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    1. git репозиторий
    2. vagrant + ansible для настройки окружения (php 5.6, postgresql 9.4, nginx и далее уже то что нужно конкретно к проекту)
    3. базовый каркас приложения на основе symfony2 (чуть чуть изменена структура под себя)
    4. behat, phpspec - основные настройки
    5. phpcpd, phpmd, php-cs-fixer и прочие приблуды для автоматического анализа кода и генерации отчетов
    5. gulp - для сборки бэкэнда и фронтэнда
    6. скелет angular приложения для админки

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

    7. генерация ключей для деплоймента и их шифрование в gpg с ключами разработчика и CI-ки (если нужно)
    8. настройка CI

    Ну а далее идут уже митинги, обсуждения, и кодинг собственно
    Ответ написан
    Комментировать
  • Как установить несколько версий php на php5-fpm + nginx?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    - ставим все нужные версии PHP (то есть нужно установить несколько php-fpm)
    - форвардим запросы на нужный fpm.

    www.sitepoint.com/run-multiple-versions-php-one-server
    Ответ написан
    Комментировать
  • Как оптимизировать нагрузку на сервер с блогом WordPress?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    кеширование, поставьте какой w3total cache или что-то такое (думаю варниш фронтом ставить будет жирно на таком тарифе). Пусть WP генерит HTML-ки и сохраняет а далее nginx пусть уже поклонникам отдает статику. Тогда до PHP запросы вообще не будут доходить.
    Ответ написан
    2 комментария
  • Silex DI для контроллера?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    класс как сервис, но это как-то дико звучит.

    Почему? Более дико звучит иньекция контейнера в класс.

    silex.sensiolabs.org/doc/providers/service_control...

    опять же по ссылке вы узнаете как иньектить что угодно в класс контроллера.
    Ответ написан
    5 комментариев