• Как спарсить из файла конкретную строку?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    "Конструкция if является одной из наиболее важных во многих языках программирования, в том числе и PHP."
    Ответ написан
    2 комментария
  • Не могу понять в чем ошибка?

    @sl0
    Саму ошибку, конечно, прикладывать не надо, тут все телепаты.
    Ну как телепат телепату дам подсказку: количество { должно равняться количеству }.
    Ответ написан
    Комментировать
  • Почему Service Locator это зло и что использовать вместо?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Все эти страшные слова - они на самом деле всегда про одно и то же - про связность. Когда ты хардкодишь внутри класса вызов какого-то конкретного сервиса - ты намертво к нему привязываешься. И чтобы поменять сервис на другой, ты будешь вынужден поменять код класса. Окей, поменял. И тут же в другом месте, где этот же класс использовался, что-то сломалось! И что теперь? Делать два класса, которые различаются одной строчкой? Нет конечно. А как тогда использовать один и тот же класс для обработки разных входящих данных (или одних и тех же данных, но разными способами)? Сделать его поведение изменяемым. То есть сделать изменяемыми те инструменты, которыми он пользуется - т.е. его зависимости.

    Поэтому все зависимости обычно передаются через конструктор (и поэтому и называются инъекция зависимостей.)

    Таким образом мы можем менять поведение класса, не меняя его код

    Но тут надо понимать, что всё это работает только при правильном применении ООП. А точнее просто при применении ООП. Потому что 98% "ООП" кода, который пишется на РНР - это голимая процедурщина, даже если она обёрнута в классы и методы. Если у тебя метод класса представляет из себя стену кода, которую ты тупо перенёс из файла, инклюдившегося в любимое похапешное спагетти - то это не ООП. Это та же процедурщина, вид сбоку. И смысл использования dependency injection ты с ним не почуствуешь. Будешь конечно применять, но в качестве карго культа - потому что тебе это на тостере написали.
    А вот когда твой код начнет становиться действительно объектным - тогда стразу станет понятнее.


    Похожим на сервис локатор является сервис- или DI-контейнер. Используемый вручную, он является тем же самым сервис локатором. Поэтому вручную его никогда не надо вызывать - что и запрещается в симфоневских конроллерах - а только для автоматического создания классов. В МВЦ у тебя ведь очень многие объекты создаются автоматом - сущности, контроллеры. И вот для того, чтобы при автоматическом создании экземпляра класса у тебя были на руках все требуемые сервисы - и нужен контейнер.

    Соотвтственно, ответ на вопрос "что использовать?" очень простой:
    - при ручном создании экземпляра объекта, все зависимости передавать в него через конструктор, а не получать "из воздуха" в коде.
    - при автоматическом создании экземпляра объекта, использовать dependency injection container

    В этим смысле очень полезно освоить Симфони - строгий фрейворк, в котором нет сервис локатора и в котором запрещено пользоваться контейнером напрямую.
    Ответ написан
    4 комментария
  • В сфере IT для новичков нет перспектив?

    @nApoBo3
    Это сложный вопрос. На первый взгляд на низовых позициях в ИТ дикая конкуренция. С другой стороны, она дикая но совершенно беззубая, поскольку уровень кандидатов соответствует дворнику.
    Месяц назад искал себе помощника помощника, кандидатов море, уровень ниже плинтуса, не знают ничего совсем, две кнопки выучили и вот уже ИТ специалист.
    Работа, это все таки не школа и не институт, тут вы в замен тоже что-то должны дать, т.е. должны делать какую-то работу полностью самостоятельно и с должным качеством. Если вы что-то умеете делать самостоятельно и полностью понимаете процесс, то вот такую работу и ищите. То что кто-то может next, next, finish, поставить windows ИТ специалистом данного человека не делает.

    Вот и получается, конкуренция дикая, но среди перспективных ее практически нет.
    А перспективные это те, кто понимают, чтобы получить нужно сначала вложить, и много, и регулярно вкладывают в себя.
    Ответ написан
    3 комментария
  • Попинайте. Работодатель сказал, что у меня код PHP устаревший. В чем именно проблемы?

    Stalker_RED
    @Stalker_RED
    @mysql_query() уже одного этого кусочка хватает для того, чтобы сильно усомниться в скиллах.

    Функция mysql_query устарела более семи лет назад, и в современных версиях языка ее вообще нет.
    Подавление ошибок через @ - вообще шедевр. У вас, значит, запрос с ошибкой, или база упала - но ваш код это просто игнорирует и делает вид, что так и надо. Зашибись :)

    Читайте https://phptherightway.com/
    Ответ написан
    Комментировать
  • Как не попасть в "неправильный" PHP?

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

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    Лучший вариант в Вашем случае будет - нанять специалиста по ИБ для поиска уязвимостей и продолжить сотрудничество с разработчиком по линии закрытия уязвимостей.
    С юридической стороны - разработчик не должен отвечать за заведомо незаконные действия третьих лиц.
    Ответ написан
    1 комментарий
  • Очень хорошо знаю PHP - куда двигаться дальше?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Хайлоад

    Сразу поймёшь, что ничего не знаешь вообще
    Ответ написан
    2 комментария
  • Как привязать прокрутку мышкой к горизонтальному скроллу?

    DanArst
    @DanArst Куратор тега CSS
    Гриффиндор в моде при любой погоде!
    Все работает

    Ответ написан
    2 комментария
  • Выборка из массива по значению?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    foreach + if
    Ответ написан
    Комментировать
  • Можно ли с сайта отправить сообщение в Viber или WhatsApp и потом открыть сам чат?

    FeST1VaL
    @FeST1VaL
    Тихий
    Да можно, если не ошибаюсь все передается через ссылку типо viber/?text=Здравствуйте&phone=123
    Точные примеры мне лень искать

    viber://chat?number=9111111111
    whatsapp://send?phone=9111111111
    Ответ написан
    3 комментария
  • Топ пользователей, и вывод текущего места в профиле, как правильно реализовать в MYSQL + PHP?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Решение на чистом SQL - пронумеровать возвращённые строки через cross join
    SELECT 
    (@row_number:=@row_number + 1) AS pos, 
    `login`, `rating`, `team`
    FROM `users`, (SELECT @row_number:=0) AS t 
    ORDER BY  `rating` DESC 
    LIMIT  100


    Либо вывести вести счётчик при выводе на PHP
    <table style="margin-left: auto;margin-right: auto; margin-top: 20px;">
               <tr><th style="color: black; text-align: center;">Игрок</th><th style="color: black; text-align: center;">Команда</th><th style="color: black;">ROT <i style="cursor: pointer;" title="ROT- Raiting One Tour" class="fas fa-question-circle"></i></th></tr>
               <?php 
    db();
    
    $rait = mysqli_query($db, "SELECT `login`, `rating`, `team` FROM `users` ORDER BY  `rating` DESC LIMIT  100");
    
    if(mysqli_num_rows($rait)) {
    
    $position = 0;
    while ($row = mysqli_fetch_assoc($rait))
     echo '<tr><td>'.(++$position).'. '.$row['login'].'</td><td>'.$row['team'].'</td><td>'.$row['raiting'].'</td></tr>';
    }
                ?>
               
           </table>


    Позиция в рейтинге для профиля = посчитать сколько записей с рейтингом который больше чем текущий рейтинг игрока
    SELECT (COUNT(*)+1) as rating_pos FROM users WHERE `rating` > 'рейтинг_текущего_профиля'
    Ответ написан
    5 комментариев
  • Как в современном мире используют php?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    нынче не комильфо использовать php внутри html кода, то есть делать какие либо вставки php кода
    Думаю, речь шла про то, что нужно использовать шаблонизаторы типа Twig, а не лапшу в стиле шаблонов Битрикса.
    Ответ написан
    7 комментариев
  • Почему выпадающее меню пусто?

    @402d
    начинал с бейсика на УКНЦ в 1988
    посмотрите в исходный код страницы в броузере.
    У оптиона ключ название категории и литерал не закрыт. Видимая часть отсутвует.
    Читаем синтаксис html и исправляем свою строку. Правильное поле в ключ. Название в значение.

    ошибка в 6ой строке. там где ехо оптион. должны быть то что пойдет как значение валуе и название видимое. У вас только одно и с пропущенной кавычкой
    Ответ написан
    Комментировать
  • Чем отличается oop php от oop javascript?

    Snova_s_vami
    @Snova_s_vami
    JavaScript ES5-8, TypeScript, Angular
    Если коротко, то JS это прототипный язык, само ядро отличается от других ООП языков.
    Те же классы это синтаксический сахар над функциями-конструкторами с их прототипами.
    Нет поддержки интерфейсов, типов, абстрактных классов, отсутствует инкапсуляция по умолчанию без танцов с бубном в виде модулей.
    Если интересует frontend с полноценным ООП, используйте TypeScript. В результате это будет тот же JS, но в процессе работы вы сможете пользоваться всеми прелестями ООП.
    Ответ написан
    5 комментариев
  • Что я делаю не так с file_get_contents?

    @dzhebrak
    Вероятно на странице два блока пагинации, которые соответствуют указанному регулярному выражению.

    По умолчанию в preg_match_all передается флаг PREG_PATTERN_ORDER

    PREG_PATTERN_ORDER
    Упорядочивает результаты так, что элемент $matches[0] содержит массив полных вхождений шаблона, элемент $matches[1] содержит массив вхождений первой подмаски и т.д.

    Поэтому в $pages[0] указаны все вхождения шаблона, а в $pages[1] - вхождения первой подмаски (номер страницы в вашем случае).
    Ответ написан
    Комментировать
  • При выборе PHP фреймворка стоит ли обращать внимания на тесты скорости?

    inoise
    @inoise Куратор тега PHP
    Solution Architect, AWS Certified, Serverless
    Имхо, бесполезная метрика. Давайте разберёмся почему.
    Что нам даст данная метрика? Ничего. Бизнес-логика и сетевые издержки съедают куда больше и на их фоне производительность движка даже не заметна. А если вспомнить что проект состоит не только из кода так вообще смешно становится
    Ответ написан
    Комментировать
  • Хак/хитрость области видимости переменных и методов?

    @Nolan81
    программист
    А неважно откуда вы достаете этот второй объект, важен его тип, а он такой же.
    Поэтому и имеет доступ, вот в доках.

    Это в php так, в других ООП языках может и нет.
    Ответ написан
    3 комментария