Задать вопрос
  • Какие есть best practice по работе с классом для бд?

    @timofey99_kaz Автор вопроса
    FanatPHP, ааааа, все, хоспаде. Спасибо!
    P.S. Я, конечно, слукавил, что это мой первый вопрос на тостере, потому тебя я знаю (не лично, конечно) и вот что хочу сказать. Ты - это самое худшее, что может быть в погромисте, как в ячейке социума. Токсичность на токсичности и токсичностью погоняет. Я бы категорически хотел, чтобы подобной токсичности было меньше. Но, черт, кому-кому, а тебе точно можно быть токсичным, потому что даже этот вопрос я написал лишь с надеждой на ответ от кураторов или тебя, потому что ответы остальных ни в какое сравнение по ценности с твоими не идут. Так вот, к чему я это, наверное, тебе мало кто говорит спасибо не применительно к вопросу, но я искренне хочу тебя поблагодарить за всё, что ты делаешь для комьюнити пыха в рунете. Твои ответы действительно очень ценны и тот факт, что ты это все делаешь бесплатно, говорит о тебе, как об очень добром и болеющем за прогресс и обучение человеке. Сил тебе и еще больше огня в сердце. Ещё раз - спасибо:)
  • Какие есть best practice по работе с классом для бд?

    @timofey99_kaz Автор вопроса
    FanatPHP,
    $this->db = $db не создаёт, рекомендуется
    Если честно, вот эту часть всё еще не понял. Что хранится в переменной $db? И как она может не создавать зависимость (как она может не принимать объект с этой базой?)?
    И при всем при этом, чтобы получить сообщение об ошибке, никакого кода вообще писать не надо, пхп сам обо всем сообщит, если его правильно настроить

    Прочитал статью, еще раз спасибо за ценные советы!
  • Какие есть best practice по работе с классом для бд?

    @timofey99_kaz Автор вопроса
    FanatPHP, спасибо большое.
    Последний вопрос, если не затруднит буквально. Я находил статьи (в частности про инверсию зависимостей), в которых приводился подобный кусок кода $this->db = new Database(), с комментарием, что это создает жесткую привязку, и что, мол, так делать не рекомендуется. Разве это не так?
    Еще раз большое спасибо
  • Какие есть best practice по работе с классом для бд?

    @timofey99_kaz Автор вопроса
    FanatPHP, большое спасибо за развернутый ответ!
    От инъекций надо защищать не только данные но и имена полей и таблиц

    Вообще не подразумевается, что эти данные будут вводиться клиентом, они настраиваются в контроллере по типу:
    (new Database)->insert('users', ['$data' => '$someData'])
    Не знал, что здесь нужно защищаться и от себя самого. Учту!
    и вообще внимательно прочесть, что там написано
    Спасибо, я вообще все по мануалу делал, но, видимо, плохо читал.
    если есть rawQuery, то почему она не используется в delete?

    Поспешил и не переделал это, хотя явно планировал.
    я бы вообще выкинул все методы кроме конструктора и rawQuery
    А все остальное делал средствами SQL и PDO.

    Я, если честно, главного не понял. Как корректнее всего использовать подобный класс при работе с другими?..
  • Какие есть best practice по работе с классом для бд?

    @timofey99_kaz Автор вопроса
    FanatPHP, Дмитрий, хорошо, большое спасибо%) буду ждать
  • Какие есть best practice по работе с классом для бд?

    @timofey99_kaz Автор вопроса
    Дмитрий,
    передавайте в конструктор сразу объект pdo а конфиг и создание его вынести за пределы
    а куда его можно вынести?
    так же в конструктор можно сразу передавать таблицу, и из каждого метода из аргументов оно уйдёт

    Я правильно понимаю, что все-таки мне в каждом методе User нужно создавать объект Database?
    FanatPHP,

    Ну и очень много как дублированного, так и бессмысленного кода

    Я действительно ценю Ваш фидбек, но мне искренне бы хотелось, если не сложно, конкретики. Хотя бы по вопросу (а в идеале - по всему сказанному Вами), потому что я хочу учиться и развиваться как программист и специально задал вопрос знающим людям:) ).
  • Какие есть best practice по работе с классом для бд?

    @timofey99_kaz Автор вопроса
    FanatPHP,
    ну самая-пресамая best practice - это чтобы класс для работы с БД не допускал SQL инъекций. А здесь они прут изо всех щелей.

    Согласен, спасибо за замечание. Говорю, я только учусь и хочу написать это все самостоятельно, чтобы учиться и набивать шишки.
    Очень интересно, и в какой момент снизошло такое озарение?

    В тот момент, когда узнал, что:
    class User
    {
        private $db;
    
    public function __construct()
        {
            $this->db = new Database();
        }

    добавляет очень жесткую связанность между классами, которую следует избегать. Да, я учусь и гуглю и это мой первый вопрос на Хабре.
  • Какие есть best practice по работе с классом для бд?

    @timofey99_kaz Автор вопроса
    Спасибо, а если без ORM?