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

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Если существует ли возможность динамической смены имени класса?

    Нет, даже через runkit.

    Это решение для очень кривой архитектуры

    Это не решение, а усугубление проблемы.

    разработчик не хочет использовать пространства имён ввиду того что проект насчитывает десятки тысяч классов.

    Если проект не особо развивается, а команда состоит из 1 разработчика - то смысла в переносе на неймспейсы может и нет.

    В остальном же - ничто не мешает начать перепил на найспейсы и человеческий автолоадинг помодульно. + Нормальные IDE типа PhpStorm с этим довольно быстро справляются.
    Ответ написан
    Комментировать
  • Правильно ли я пишу моки?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    крофьИзГлаз.jpg

    Вы не задумывались, почему в моках можно подменять методы, а не свойства?

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

    1. Прочитайте про PSR, не плодите каку.
    2. Моки имеет смысл делать без конструктора И прописывать заглушки под вызываемые методы.
    3. Методы, что не должны быть вызваны - тоже заменяются заглушками, но в expects заганяете never.
    4. Старайтесь не использовать статику, на сколько это возможно. Тестировать ее возможно только косвенно.
    5. Старайтесь соблюдать SOLID. В вашем примере может это конечно неудачное название, но ивент как правило - это некий скоп данных, не стоит обременять его логикой.
    6. Работа с бд в ActiveRecord может и удобная, на для тестов - эт говно, сточки зрения безопасности и расширения - увы, тоже. Конкретно в вашем случае создайте отдельный метод, который будет обновлять ваш идентификатор, напишите тест для него который будет работать с БД. Для ивента вам стоит проверять только тот факт, что метод вызвался с корректными данными.
    Ответ написан
    Комментировать
  • Какой php фреймворк подойдет для оффлайн разработки?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Дичь какая то. Разработка без инета...

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

    Отказываясь от композера вы делаете прыжок в прошлую эру.

    На счет фреймворка - посмотрите silex.
    Ответ написан
  • Очередной глупый вопрос. Как сделать свой файл конфиг?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Под конфиги есть один очень удобный подход: конфиги в константах класса.
    Смысл в следующем, создаете базовый конфиг, например DefaultConfig.php настройки забиваете под окружение для разработки

    namespace MyVendor\MyProject\Config;
    
    class DefaultConfig
    {
        const MYSQL_DSN = 'mysql:host=localhost;dbname=dbName';
        const MYSQL_USER = 'some_user';
        const MYSQL_PASS = 'some_password';
    }


    Так же создаете конфиг, который будет подключаться в вашем проекте Config.php (игнорируется git/svn/или что у вас там)

    namespace MyVendor\MyProject\Config;
    
    class Config extends DefaultConfig
    {
    }


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

    За счет этого подключение к БД у вас может выглядеть так:

    $pdo = new PDO(
        Config::MYSQL_DSN,
        Config::MYSQL_USER,
        Config::MYSQL_PASS
    );
    Ответ написан
    Комментировать
  • Для чего создавать объект через reflection класс?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Для случаев, когда конструктор приватный, либо этот конструктор не нужно вызывать. Последнее - вполне отличная практика при написании тестов для создания моков ваших зависимостей.
    Ответ написан
    Комментировать
  • Есть ли какие-нибудь CMS для документирования разработки и написания примеров?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    media wiki
    Ответ написан
    Комментировать
  • Ubuntu 16.04 mssql на php7 реально?

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

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Почитайте сначала про реляционные СУБД, как они устроены.
    Конкретно под ваш случай:

    CREATE TABLE IF NOT EXISTS `formulaResult` (
      `formulaId` INT UNSIGNED NOT NULL AUTO_INCREMENT,
      `result`    TINYINT      NOT NULL,
      PRIMARY KEY (`formulaId`)
    )
      ENGINE = InnoDB;
    Ответ написан
    Комментировать
  • Безысходная ситуация с шаблоном joomla. Что делать?

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

    Не можете на джумле (вообще говоря оно и к лучшему для вас же) - так и скажите. Пишите на том, что знаете, или отказывайтесь.
    Ответ написан
    1 комментарий
  • Как генерировать нормальный и читабельный но уникальный артикул для товара?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Можно подсмотреть у сеошников: {product-id}-{translite-product-name}
    Вы должны четко понимать, будут ли люди это читать, или нет. Если высока вероятность, что нет - не заморачивайтесь, UUID, или просто ID - вполне ок.
    Ответ написан
  • Как убрать последний символ php?

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

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Запустите 20 обработчиков через supervisor (будет мало - докиньте еще), для каждого по выделяйте свой список урлов, собсно все. П - Параллелизация
    Ответ написан
    Комментировать
  • Перманентная проверка скорости загрузки страниц?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    На сколько я понял вы ищите graphite+statsd | zabbix
    Ответ написан
    Комментировать
  • Как называется этот компонент?

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

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Смотря какая частота ваших 15-секундных запросов. Если раз в день - 1-ый вариант оптимален. Если частота запросов высокая - 2-ой.
    Ответ написан
    Комментировать
  • Как получить скриншот терминала Debian?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Что мешает получить список файлов через readdir или glob?
    Далее при особом желании генерировать картинку через imagick, или gd.

    То как вы описали - похоже на легкую наркоманию. На сервере спокойно могут Х-ы отсутствовать.
    Ответ написан
    2 комментария
  • Как решить Uncaught SyntaxError: Unexpected token }?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    "window.open("http://ya.ru/", "Yandex", params); return false;"

    Вас тут должны смущать двойные кавычки
    Ответ написан
    Комментировать
  • Где найти паттерны "правильных" частей системы?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Вы ищите то, чего нет. Нет понятия "правильных" частей системы, или "правильных" паттернов.
    Вот вам пример: OAuth, что вы привели имеет 2 версии, это что получается, первая была не правильная?))
    RBAC - это подход, который далеко не всегда уместен, часто его проще и лучше заменить ACL (безусловно, это не всегда так).

    PSR-3 - это не совсем паттерн, это скорее рекомендуемое соглашение.

    Конкретно по php миру: рекомендую реализовывать следующие требования, проникнуться Symfony way, активно использовать паттерны: DTO, VO, код писать вместе с тестами (вот это капец как критично для крупных систем).

    Что касается более высокоуровневых паттернов, в стиле OAuth, RBAC - они вам потребуются только в случае, если это требуется бизнесу, для которого вы пишете систему.
    Ответ написан
    Комментировать
  • Хороший пример загрузчика классов?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Посмотрите реализацию в Symfony и Silex
    Ответ написан
    Комментировать
  • Что происходит после ввода адреса сайта?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    https://www.youtube.com/watch?v=6nao1qJwc7Y

    Если нужно знать более детально: почитайте руководство по курсу CCNA
    Ответ написан
    Комментировать