Задать вопрос
Местоположение
Кипр, Government controlled area, Лимассол

Достижения

Все достижения (11)

Наибольший вклад в теги

Все теги (67)

Лучшие ответы пользователя

Все ответы (63)
  • Какие есть ресурсы по выполнению тестовых заданий на поиск уязвимостей?

    syamskoy
    @syamskoy
    Задачки по взлому: https://www.hackthebox.eu/ Что бы зарегистрироваться, тоже нужно хакнуть регистрацию ;)
    Ответ написан
    2 комментария
  • Что означает обратный слеш перед вызовом функции?

    syamskoy
    @syamskoy
    <?php
    
    namespace myNameSpace;
    
    function in_array($value, $arr)
    {
        return 'Local function';
    }
    $arr = [1, 2, 3];
    $value = 1;
    
    var_dump(in_array($value, $arr));
    var_dump(\in_array($value, $arr));

    Результат:
    string(14) "Local function"
    bool(true)


    Зачем это нужно? Только если в текущем пространстве имен объявленна одноименная функция как и в глобальном. И что бы обратиться к глобальной, используется слеш - глобальное пространство имен.
    Ответ написан
    Комментировать
  • Принцип DIP из SOLID и Autowiring из DI-контейнеров?

    syamskoy
    @syamskoy
    Dependency injection - это когда в класс A мы передаем класс B через конструктор или сеттер, что бы он с ним работал, а не создавал его в своих нутрях.
    Dependency Inversion - это когда мы в классе A работаем не с конкретной реализацией, а с интерфейсами: указываем интерфейсы в конструкторе, в методах, в возвращаемых типах и т.д.
    Это два разных понятия, которые иногда объединяют в одно, и иногда их путают.
    Так вот, autowiring - это про Dependency injection, а D в solid - это про Dependency Inversion. Одно другому не мешает и не нарушает.
    Ответ написан
    1 комментарий
  • Как решить php выдает ошибку при подключении к БД?

    syamskoy
    @syamskoy
    У вас код написан с синтаксисом PHP 8, а запускаете вы код на более старой версии PHP, которая не понимает этот синтаксис. Конкретно речь идёт об именованных аргументах. Обновите PHP или пишите без имен аргументов.
    Ответ написан
    Комментировать
  • Для чего так делают?

    syamskoy
    @syamskoy
    Интерфейс нужен не для того, что бы вы не забыли добавить какой-то метод. Он нужен, что бы вы работали, с контрактами. Например:
    public function addToSwimmingPool(Swimming $animal): void
    {
        $this->pool[] = $animal;
    }

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

    Без использования интерфейса, пришлось бы делать так:
    public function addToSwimmingPool($animal): void { ... }

    Тут вы могли добавить что угодно в массив. И потом где-нибудь программа бы сломалась, так как у переданных объектов нет нужных методов.

    public function addToSwimmingPool(Penguin $animal): void { ... }

    А так вы кроме пингвинов никого больше не добавите.
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (70)