• Чем отличаются self::, parent:: и static:: в PHP?

    arutyunov
    @arutyunov
    Mooza.ru — Делаем сайты
    Проще объяснить на примере:

    class A {
      public static function getValSelf()
      {
      	return new self();
      }
    
      public static function getValStatic()
      {
      	return new static();
      }
    }
    
    Class B extends A {
    }
    
    var_dump(get_class(B::getValSelf())); // 'A'
    var_dump(get_class(B::getValStatic())); // 'B'
    Ответ написан
    Комментировать
  • Чем отличаются self::, parent:: и static:: в PHP?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Позднее связывание — это значит привязка будет происходит не на этапе компиляции кода, а на этапе его исполнения.
    В примере Кирилл Арутюнов это видно — self всегда указывает на тот класс, в котором оно объявлено, а static — на класс в котором он по факту будет вызван с учетом всех наследований.
    Ответ написан
    Комментировать
  • Как отправить запрос через curl php на localhost?

    karabanov
    @karabanov Куратор тега Docker
    Системный администратор
    localhost в контейнере свой, отсюда и ошибка.

    Вариант так себе, но рабочий - настрой сервис, который работает на хостовой машине, так, что бы он слушал на всех IP (возможно это уже сделано) и обращайся к нему из контейнера по IP шлюза (он доступен как с хостовой машины, так и из контейнера). IP шлюза - это тот, что назначен на докеровый бридж узнать можно командой:
    docker inspect --format='{{range .NetworkSettings.Networks}}{{.Gateway}}{{end}}' <container_name>

    Для удобства можешь дать ему имя с помощью extra_hosts: в docker-compose.yml

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

    И плохой вариант убери изоляцию для сети, то есть Use host networking. Директива network_mode в docker-compose.yml
    Ответ написан
    5 комментариев
  • Как сделать rpc из rest api?

    inoise
    @inoise Куратор тега PHP
    Solution Architect, AWS Certified, Serverless
    Создаём новый сервис и используем его как гейтвей. Новый сервис трансформирует запросы в rest.
    Ответ написан
    Комментировать
  • Как вывести все записи которые старше 6 месяцев mysql?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Если у вас там ENUM, то значением поля является не то, что вы видите на экране, а порядковый номер данного варианта в ENUM.
    То есть, для ENUM('1', '3', '6') единица будет давать числовое значение 1, тройка - 2, шестёрка - 3.
    Ответ написан
    Комментировать
  • Чем расшифровать такой javascript?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Это не шифр, а обфускация.
    И тебе нужно не расшифровать, а деобфусцировать.
    Учись общаться с разработчиками на одном языке.
    Попробуй тут https://lelinhtinh.github.io/de4js/
    Ответ написан
    Комментировать
  • Как вывести на сайте текущее московское время?

    NikolayAlb
    @NikolayAlb
    JS:
    function getMoscowDate() {
        var offset = +3;
        return new Date( new Date().getTime() + offset * 3600 * 1000).toUTCString().replace( / GMT$/, "" );
    }

    И через setInterval выводите куда нужно.
    Ответ написан
    Комментировать
  • MySQL. Ошибка too_many_connections, но в статусе не более 15ти соединений?

    @melickvadim Автор вопроса
    Решил вопрос оптимизацией архитектуры сайта и ускорением запросов.
    Было несколько тяжелых запросов, которые забивали пул коннектов из-за медлительности. Один запрос не успел отработать, а на сервер уже лезут ещё десяток запросов, и всё это с полной прокачкой таблицы и записью в кеш mysql.
    Ответ написан
    Комментировать
  • Как перенять объектно-ориентированное мышление?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Т.е. сложно понимаю, что "засунуть" в один объект, что в другой, что должно быть статическим методом, что приватным и тд.


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

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

    Теперь задумаемся о декомпозиции всего этого хаоса. Мы находим какую-то задачу, которую выполняет наш код (например какую функцию вызвать для обработки каждого конкретного запроса) и выносим это в отдельный объект. Отправка email-ов - отдельный объект. Весь SQL зашиваем в отдельный объект. Соединение с базой - объект. Пользователи - объекты. Все - объекты.

    И главное, у каждого объекта есть своя область ответственности. UNIX way. Каждый объект делает что-то одно и делает это хорошо. Бывает так что ну... нужно сделать так что бы один объект делал две вещи. НЕ вопрос, мы можем его попросить сделать что-то сложное, а он будет как хороший менеджер тупо делегировать работу другим объектом. То есть он и сложную штуку сделает, и сам не будет знать как она делается.

    А все безхозные функции, которые не пренадлежат никаким объектам (например функции порождающие объекты) можно вынести в статические методы. Главное что бы статичесих переменных у нас небыло (ибо это те же глобальные переменные). И поменьше публичного ибо черт его знает что эти разработчики будут использовать. Причем "те разработчики" это вы завтра.

    Вообщем писав всё время на процедурке, сложно перейти на ооп.


    Просто не думайте что это что-то "принципиально другое". Это та же самая процедурка, просто благодаря классам и объектам, вы можете порезать систему на маленькие модули. Данные будут лежать рядом с процедурами и у вас будет больше контроля за происходящим.

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

    Подскажите, какой проект начать писать (гостевая, блог), или может начать изучать фреймворк.


    Фреймворки универсальны, а значит чистого ООП там быть не может. Во всяком случае нет ни одного фреймворка на котором стоит учиться ООП.

    Есть хорошие упражнения на развитие понимания объектно-ориентированного проектирования. Например вот: https://habrahabr.ru/post/206802/

    Сразу хочу отметить что это крайности. Упражнения же. Они должны ограничивать вас что бы заставлять думать и задавать правильные вопросы.

    Или может подскажите книгу/сайт где пошагово в ооп написан какой-то проект, чтобы быстрее пришло понимание.


    Так вы научитесь делать один конкретный проект а на втором вы уже проиграете. Так дела не делаются. Надо разобраться с причинами появления идеи ООП. Ну то есть что было до. Можно еще с функциональным программированием попробовать разобраться. В PHP оно слабо применимо, но основные идеи очень тесно переплетаются с ООП и познав немного функциональщины ваше ООП будет лучше. Да и если про ООП вы можете найти много булшита, про функциональщину врут мало.
    Ответ написан
    3 комментария
  • Xhr не отсылает post запрос?

    @roxik
    Попробуй добавить

    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
    Ответ написан
    Комментировать
  • Что такое Referrer Policy и зачем это нужно?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    1) https по умолчанию не передает реферер, что портит малину многим - от рекламы до аутентификации, XSS и проч. Поэтому придумали передавать через другой заголовок

    2) strict-origin , просто origin даст матюки браузеру при нестандартах
    Ответ написан
    1 комментарий
  • Какие заголовки необходимо ставить при запросе через xhr?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Какие заголовки необходимо ставить при запросе через xhr ?
    Те которые требуются вашему приложению, универсального набора нет.

    Выводит в консоль такое
    Уберите эти заголовки из запроса - браузер их в любом случае игнорирует.
    Ответ написан
    Комментировать
  • Как установить переменное окружение в npm скрипте start с меткой NODE_ENV=development и запустить gulp task default?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    && в данном случае не нужно, так как с ним получается, что вы сначала запускаете cross-env NODE_ENV=development, а потом уже gulp.
    Ответ написан
    3 комментария