• Как вы освоили шаблоны проектирования?

    27cm
    @27cm
    TODO: Написать статус
    Вот вам 12 маленьких задач на 12 паттернов:
    github.com/zfcampus/zendcon-design-patterns

    1. Открываете папку с паттерном.
    2. Читаете README.md с описание задачи.
    3. Открываете exercise.php и пытаетесь решить задачу, применив соответствующий паттерн.
    4. При необходимости вспоминаете теорию: github.com/domnikl/DesignPatternsPHP
    5. Сверяетесь с решением в solution.php.
    Ответ написан
    7 комментариев
  • Laravel: как правильно организовать приватное хранение изображений?

    Fragster
    @Fragster
    помогло? отметь решением!
    Нужно сделать маршрут, контроллер, что угодно, что будет проверять доступ и возвращать данные, примерно так:

    public function image(Request $request, PrivateImage $image)
        {
            if (!<есть доступ>) {
                abort(404);
            }
            $path = "private_images/{$image['id']}.{$image['ext']}";
            return response(Storage::get($path))->header('Content-Type', Storage::mimeType($path));
        }
    Ответ написан
    1 комментарий
  • Защита от бесконтрольного создания картинок?

    neuotq
    @neuotq
    Прокрастинация
    Гуглите "Rate Limiting" для вашего фреймворка, библиотеки, возможно на уровне веб сервера или чего ещё. И постройте логику приложения так, что если нужно отдавать не статитку, то условно свободно, а если генерировать, то тут ограничения. Обычно это делается на одно условное устройство/пользователя и/или отдельно на отдельный роут/операцию/функцию.
    Ну например, на пользователя 5 раз в секунду, на роут генерации картинки 100 раз в секунду, если больше любого лимита, возвращай код 429.
    Ответ написан
    3 комментария
  • Как избегать foreach внутри foreach?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Как избегать foreach внутри foreach?

    Сделать его не явным

    Очень часто вижу на разных форумах, в коммах в вк и тд юзать цикл внутри цикла не правильно

    Глупости. Если у вас структура данных - массив массивов даже заюзав какой-нить array_map/array_values/array_keys/array_merge/... вы все равно будете использовать двойной цикл, пусть и не явно. В случае рекурсивного обхода у вас будет точно так же цикл внутри цикла и тоже не явно.

    Каким образом можно сделать это по другому(правильно) ?

    Написать цикл внутри цикла и не выпендриваться.
    Ответ написан
    Комментировать
  • Чем отличаются друг от друга консоль и терминал?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    Комментировать
  • Как задать значение по умолчанию для сущности DOCTRINE ORM?

    @tukreb
    Можно так, через options={"default"="now()"}
    /**
         * @ORM\Column(name="date", type="datetime_immutable", nullable=false, options={"default"="now()"})
         */
        private \DateTimeImmutable $date;

    Точно работает с now(), более сложного не проверял, но я не вижу причин почему не должно сработать. Правда не факт, кто доктрина сможет правильно сгенерировать миграцию, возможно руками придётся править в миграции.
    Ответ написан
    Комментировать
  • Как правильно выполнять много команд в Docker?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Как правильно выполнять много команд в Docker

    Практически все то же самое как вы бы запускали их без докера

    хочу запустить их на докере, но вот возникла дилемма, команд то много

    ни дилеммы, ни проблемы в этом не вижу

    поискав в интернете нашел решение, создать bash скрипт, туда записать все команды

    зачем bash скрипт, если вам можно сразу скрипт python запускать?

    то это в докере не python надо будет устанавливать, а ubuntu, и там уже устанавливать python и все запускать, верно ?

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

    Но вообще - для вашего случая непонятна сама необходимость использования докера
    Ответ написан
    Комментировать
  • Как строить карьеру senior разработчику?

    1) Написание эффективного кода и кругозор - не есть критически навык для сениора. Большое количество людей получает этот навык в той или иной степени.

    2) Знание отрасли и её специфики, и как под эту специфику писать код - куда более важный навык, который и оплачивается за хорошие деньги. Если эта отрасль обширная и денежная (большой спрос на программистов и большие возможности у компаний - то мы получаем бинго). Поэтому так много банковских программистов остается в финтехе, ибо они понимают, что им платят "выше рынка", не за написание кода, а за знание специфики финтеха. Тоже самое верно для телекома, логистики, недвижки, медицины, чат-серверов и так далее.

    3) Если хотите быть востребованным сениором, которого все хотят и зовут к себе, надо выбирать именно такие отрасли.
    Ответ написан
    Комментировать
  • Можно ли показывать потенциальному работодателю код с предыдущего места работы(внутри суть)?

    neuotq
    @neuotq
    Прокрастинация
    Ну формально так: авторство кода в любом случае твоё, а право на использование уже принадлежит компании.
    Далее есть ещё момент с NDA, если что-то подобное подписывал и тп, то тут часто даже нельзя говорить без кода чем конкретно занимался, только абстрактно(а порой нельзя говорить что вообще занимался чем-либо).
    Работодателям прежде всего интересны будут кейсы и алгоритм их решения. Сам конкретный код, особенно большой, нет времени изучать и вникать. Но вот очистить его от конкретики, сделав более абстрактным, решающим абстрактную задачу можно. С помощью кода вы больше показываете ваш стиль написания, чистоту и прочее.
    Поэтому :
    1. Сосредоточьтесь на кейсах.
    2. Из ваших старых работ выбирайте самые интересные(с вашей чтк зрения), подчистите их от конкретики и прямой привязке к старому проекту. Ну например была у вас там процедура како-го умного поиска объектов с гео привязкой с какой-то мудрой конкретной функцией(допустим тепловая карта цен недвижки с кросс запросами по разным таблицам), а вы его упростите до более простой и абстрагированого примера, построение данных для тепловой карты объектов(абстрактных) по заданному критерию с учётом доп свойств из связанных таблиц. Ну вы меня поняли. Заодно кстати и рефактор лёгкий будет.

    Повторюсь, много кода не нужны, возьмите буквально несколько, на ваш взгляд, интересных примеров. Их цель прежде всего показать стиль и понимания работы языка(в данном случае sql). Остальное, рассказывайте словами, в том числе алгоритм, можно блок схемки показать. Те сами знания работы БД вы сможете передать не через код уже, а словами, блок схемками и рассказами и проблемах и успехах(и неудачах тоже кстати и почему они случились)
    Ответ написан
    Комментировать
  • Как отключить строгую типизацию в php8?

    Лучше приведите текст ошибки.
    В PHP 8, нет полной обратной совместимости. А если речь о типах - в новой версии появилась проверка соответствия сигнатуры метода на соответствие с его абстрактным аналогом из используемого трейта. И тут либо откатывать, либо переписать по человечески.
    Ответ написан
    Комментировать
  • Скрыть приватные данные от пользователя php?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Отключите вывод ошибок в поток, перенаправьте в логи.
    боты получат

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

    mortislav_seriy
    @mortislav_seriy
    Веб-программист
    На сколько я слышал, не от версии PHPMyAdmin зависит наличие визуального редактора, а от версии самого сервера мускула.
    Попробуйте вот эту софтину. Есть полнофункциональный триал. dbForge Studio for MySQL
    Ответ написан
    Комментировать
  • Почему строки не равны?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Проверьте текстовки в hex редакторе. Вполне возможно, что в первой, или второй находятся непечатаемые символы.
    Ответ написан
    Комментировать
  • Как избежать повтора инклюдов в ООП PHP?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    Во первых, в современном коде файлы никто не инклюдит - много лет назад для автоматической загрузки классов придумали https://www.php.net/manual/ru/language.oop5.autolo.... И во всём коде сайта остаётся 2-3 include, один из которых - внутри генрируемого composer'ом автозагрузчика.

    Во вторых, все современные фреймворки имеют единственную точку входа: файл index.php, которому передаются все обращения к сайту. В этом файле производятся подключение конфига, и инициализация фреймворка. После чего управление передаётся роутеру, который разбирает URL запроса и передаёт управление нужному классу-контроллеру.

    В третьих, для автоматического создания объектов с автоматической же передачей конструктору нужных данных (в том числе и конфигурации) и исключения дублирования создаваемых объектов давным-давно придумали контейнеры внедрения зависимостей (DI) https://elisdn.ru/blog/116/psr7-framework-container (советую посмотреть все уроки этого цикла).
    Ответ написан
    23 комментария
  • Как запустить xdebug на homestead для php 8?

    @AFI19 Автор вопроса
    Решил проблему с помощью установки xdebug 3.
    P.S Версия homestead 10.17 и PHP8 rc-1.
    Ответ написан
    Комментировать
  • Кто-нибудь знает PHP API для выведения времени по городам?

    SilenceOfWinter
    @SilenceOfWinter
    та еще зажигалка...
    есть пакет и php расширение geoip которое содержит данные часовых поясов городов. как вариант api яндекс.карты позволяет получить аналогичные данные по названию города
    Ответ написан
    2 комментария
  • Хантят ли на тостере специалистов?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Хантят, но не так, как, скажем, на иных ресурсах. Лично мне приходили предложения о работе на почту именно с этого ресурса до тех пор, пока здесь было проф.общение. Потом - перестали.
    Ответ написан
    Комментировать
  • Тип возвращаемых значений метода. Как правильно?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Исключение здесь, вероятно, лишним будет.
    Вместо false лучше вернуть null.
    И расставить typehint.
    public function foo(SomeClass $obj): ?SomeClass
        {
            if ($obj->isNotActive()) {
                return null;
            }
            //другие действия с объектом
            return $obj;
        }
    Ответ написан
    Комментировать
  • Тип возвращаемых значений метода. Как правильно?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Зависит от сценария.
    Судя по коду, отсутствие активности - это не ошибка.
    То есть в данном случае можно вернуть null.

    А вот функции, которые возвращают false в случае ошибки устарели 20 лет назад. И если метод должен вернуть объект, но не может, то он должен кинуть исключение
    Ответ написан
    Комментировать