Задать вопрос
Профиль пользователя заблокирован сроком с 10 апреля 2022 г. и навсегда по причине: систематические нарушения правил сервиса
  • Правильно ли я делаю с точки зрения ООП?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ну в целом этот код выглядит чисто процедурным
    Замени вызовы методов на вызовы функций - ничего не изменится.

    ООПэ - это немного про другое.

    Чисто если придираться по реализации - совершенно непонятно что делает класс Хелпер и почему он получает на вход не данные а валидатор.
    Ну это я не знаю, как если для варки супа ты используешь не объект Кастрюля, а объект Посуда, кладешь в нее ножик для чистки овощей, а не сами овощи.
    Ответ написан
    5 комментариев
  • Как в современном мире используют php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    В огороде бузина, а в киеве дядька.
    Сон разума рождает чудовищ и такие вот вопросы на тостере. В одну куче смешалось три понятия

    - использование РНР в мире
    - использование РНР в качестве шаблонизатора
    - проецирование своего микроскопического опыта разработки микроскопических страниц на всю разработку в целом.

    Поэтому отвечать надо на все три вопроса по отдельности

    1. РНР в современном мире используется очень по-разному. Можно очень грубо разделить на 4 группы
    - многочисленная армия клепальщиков готовых сайтов на конструкторах типа Битрикса, Вордпресса, Друпала, Маженто и весь прочий зоопарк
    - довольно многочисленная армия тех кто не смог освоить даже предыдущий пункт, и до сих пор старательно выводит по слогам "вайл муэскуэль фетч эррэй"...
    - относительно малочисленная группа освоившая современные методы разработки включая фреймворки, поставившая напиливание сайтов на поток
    - довольно малочисленная группа программистов, которые пилят штучные проекты типа ВК, Баду, ФБ и прочий хайлоад

    2. использование РНР в качестве шаблонизатора
    Опять же, зависит от группы, к которой ты относишься, но на практике встречается только в группе 3.
    Остальные уже научились использовать шаблонизаторы.

    3. Не все проекты являются примитивным перекладыванием данных из БД в ХТМЛ. ООП "и другие возможности" нужны для написания сложных программных систем.
    Ответ написан
    Комментировать
  • Как правильно делать соединение с базой данных?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ответ написан
    Комментировать
  • Как заблокировать доступ к папкам и файлам или перенаправить запрос?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    В браузере открывается эта папка и видны все файлы.

    Ну и что?

    Вообще конечно листинг это неаккуратненько.
    Если у тебя апач, то добавиь .htaccess со строчкой
    Options -Indexes
    Ответ написан
    8 комментариев
  • Как оптимизировать этот php код?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    я думаю, даже in_array будет быстрее чем это.
    Но по-хорошему надо сделать значения индексами
    тогда проверка будет проходить мгновенно
    $base = array_flip(array_column($base, 'ID'));
    foreach($data as $dates) {
        if (!isset($base[$dates['ID']])) {
                $itog[] = $dates;
        }
    }
    Ответ написан
    3 комментария
  • На чем писать restful api?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ларавель тебе нужен, ларавель.
    Люди, котоыре советуют люмен, не понимают что это такое и как им пользоваться.
    Чтобы освоить люмен тебе нужно еще лет 5 топтать поляну.
    А на Ларе можешь начинать пилить прямо сейчас, она именно для твоей задачи и предназначена
    Ответ написан
    9 комментариев
  • Почему не выполняется остальной код после require_once?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Три проблемы.
    1. Код в вопросе вообще никак не соотносится с реальным кодом
    2. Использование @
    3. Использование бессмысленного try catch
    Ответ написан
    Комментировать
  • Как вывести значения из столбцов Mysql?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Купить себе букварь по SQL
    В ужасе дропнуть этот треш
    Сделать нормальную структуру таблиц:
    - таблицу заказов
    - таблицу товаров
    - таблицу товаров в заказе
    Вывести все нужные значения простым SQL запросом
    Ответ написан
    Комментировать
  • Почему выдает ошибку при отправке запроса pdo?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Во время войны с Японией американцы строили аэродромы в Новой Гвинее.
    И местные папуасы видели, что с неба прилетают большие железные птицы, которые привозят кучу ништяков, часть которых в конечном итоге перепадает и папуасам.

    Потом война кончилась, военные демобилизовались, аэродромы опустели.
    Погоревав, папуасы решили взять дело в свои руки, и стали сами строить самолеты из навоза и палок.
    Логично рассчитывая, что увидев нужное оборудовние, боги снова начнут присылать еду и одежду.
    Но увы, ни одной банки консервов так получить не удалось.

    Вот этот вот запрос
    $sql = ("INSERT INTO `products`(`id`, `title`, `price`, `description`, `status`, `img`) 
    VALUES (NULL, '$title', '$price', '$description', '$status','$img')");

    Это как раз такой самолет из соломы.
    Выглядит почти как настоящий, но даже не пукает.
    потому что подготовленные запросы выглядят совсем по-другому.
    Ответ написан
    Комментировать
  • Как в php узнать номер строки по слову?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    простой ответ, который должен был тебе прийти в голову самому - сначала разбить на строки и искать по ним в цикле
    ну а по-хорошему
    $line = substr_count($mystring, "\n", 0, $pos)+1;
    Ответ написан
    Комментировать
  • Какой framework использовать для создания легких сайтов?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Тебе нужен ларавель.
    Остальные ответы от людей, которые не поняли вопроса.

    Лара - это фреймворк специально разработанный для массового производства, в том числе и примитивных сайтов, в точности по системе "фигак-фигак и в продакшен", которую ты описываешь
    Люмен и другие микрофреймворки - для ГОРАЗДО более опытных разработчиков.
    CMS - это вообще не о том.
    Ответ написан
    3 комментария
  • Где хранить сессии? SQLite? MySQL? Memcached? Redis? FS?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Храни в мускуле.

    Файлы, действительно - самый неудачный вариант. Сара Големон, отвечая недавно на подобный вопрос, написала
    File storage is only a default because the runtime doesn't know in advance what database engine or credentials you're going to use unless you tell it. So... ya know.... tell it.

    То есть файлы - это от безысходности, и по-хорошему пхп бы хранил в базе, но просто не знает, в какой и как с ней соединяться.

    Редис и мемкеш - это кэш, а не хранилище. Подумай над тем, что такое кэш и для чего он используется. И подходит ли кэш для хранения сессий.

    Про скулиту ты все правильно написал. Те же файлы, вид сбоку.

    А про мускуль очень смешно. Какая-то прямо повальная датабазебоязнь. Откуда это "я вообще хочу минимизировать запросы к MySQL"? Что за ерунда про "соединение может оборваться"? И как ты вообще можешь сравнивать по производительности файл на диске, который открывается при каждом запросе, с демоном, который держит все данные в памяти и отдает по сокету?
    Ответ написан
    32 комментария
  • Как настроить авторизацию в MVC PHP?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Причина в том, что этот код - полная бессмыслица.
    Если просто случайным образом писать операторы РНР, и то получится лучше.

    Надо на пару лет забыть про красивые слова OOP и MVC, и поучиться просто писать код, который делает то, что требуется.
    Ответ написан
    4 комментария
  • Как правильно вставить переменную в имя таблицы PDO/MySQL?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Неужели так трудно вставить заголовок своего вопроса в адресную строку браузера и нажать Ентер?
    Ответ написан
    Комментировать
  • Где хранить id сессии php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Вопрос какой-то странный.
    Идентификатор сессии не нужно хранить.
    Единственная его функция - это предаваться на сервер с каждым запросом.
    Содержимое localStorage само по себе на сервер не передаётся. То есть смысла класть туда ид сессии я не вижу.

    Кроме кук нормальных вариантов все равно нету.
    Если пользователь хочет отключить куки - это значит что он хочет отключить и сессии.
    Имеет полное право.
    Ответ написан
    Комментировать
  • Как использовать PDO в рамках собственного класса?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    В константах класса ПДО за тебя слеши кто ставить будет? Пушкин Александр Сергеевич?

    Сообщение об ошибке надо всегда читать целиком. В нем написано номер строки, в которой произошла ошибка. Идем в редактор, считаем строчки, смотрим на ошибку.

    Сам класс, конечно, полная ерунда.
    В классе, который соединяется с БД, не должно быть запросов к данным. Это должно быть в отдельных классах, которые используют класс БД как сервис
    Ответ написан
  • В чем проблема этого кода?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    в том что это бессмысленный набор случайных огрызков, надерганных из интернета
    А должно быть так:
    - соединяемся правильно
    - запрос выполняем один
    - переменные передаем в него через подстановки, а не напрямую
    - идентификатор получаем правильно, а не через одно место автогеном
    <?php
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 
    $conn=new mysqli("localhost","?","?","?");
    $conn->set_charset('utf8mb4'); 
    
    $sql="INSERT INTO products(name,href,price,image_href) VALUES (?,?,?,?)";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("ssss", $name,$href,$price,$img);
    $stmt->execute();
    echo $conn->insert_id;
    Ответ написан
    Комментировать
  • Насколько защищены файлы php от просмотра?

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Комментировать
  • В чем разница при подключении класса между require и namespace?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Специально для всех местных помогаек.
    Основы нубской психологии:

    1. Нуб по определению существо озабоченное. И в каждом вопросе его интересует исключительно производительность, чтобы код обслуживал охрениллиард клиентов в миллисекунду и никак иначе. при том что и одного посетителя на сайте нет и в обозримом будущем не предвидится.
    2. Даже если написать что "разница незначительная", второе слово он просто не увидит. Так он устроен. Потому что см п.1.

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