Первый ООП код

_vitalja__

Новичок
Мой первый ООП код. Как вам? Все ли правильно или что изменить лучше?

Код:
<?php
define('DBHOST', 'localhost');
define('DBNAME', 'abc');
define('DBUSER', '12');
define('DBPASSWORD', '12');

class DB{
    private $DB;
   
    function Connect(){
        try { 
          $DB = new PDO("mysql:host=".DBHOST."; dbname=".DBNAME, DBUSER, DBPASSWORD);
          $DB->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT );
        } 
 
        catch(PDOException $error) { 
        echo $error->getMessage(); 
        }
        return $DB;
    }
   
   
    function Select($rows ,$table, $where = null, $orderby = null){
        if($where != null) $where = 'WHERE '.$where.'';
        if($orderby != null) $orderby = 'ORDER BY '.$order.'';
        $select = $this->Connect()->query('SELECT '.$rows.' from '.$table.' '.$where.' '.$orderby.'');
        return $select;
    }
   
}
?>
 

Mad Dogg

Новичок
не обращай внимание на школьников. Кароч тут так. Для начала сходи на php.net в мануал по ООП в документации прочти. Это первое. Во вторых, инициализацию вынеси в конструктор, во вторых, метод Select реально пугает. Лучше уж туда просто строку запроса передавать с массивом аргументов во втором параметре, а не так, как сейчас.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Плейсхолдеры где?

Да и метод select надо бы как-то представить в более нормальном виде. Он должен выполнять запрос на выборку. Сейчас же у тебя там свой построитель запроса+еще что-то
 

Mad Dogg

Новичок
Вынужден согласиться с предыдущим оратором.
Писать ООП обёртку над ООП - видимо, вам за это хорошо платят?
вот почему всегда такие неадекватные ответы ? человек начал пробовать ООП и тут понеслось ) обертки какие-то, реализации ) полегче
 

AmdY

Пью пиво
Команда форума
У тебя Conect каждый раз инициирует подключение, потому что объект не имеет состояния. Ты завёл приватный атрибут DB, надо в него записывать и проверять состояние.
 

Фанат

oncle terrible
Команда форума
1. К ООП данный опус не имеет ни малейшего отношения
2. За такие вот вещи
$DB->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT );
echo $error->getMessage();
и
function Select($rows ,$table, $where = null, $orderby = null){
в приличном обществе бьют канделябрами.
А в неприличном - ногами.

Тебе это для использования в работе или потренироваться?
Если в работе, то https://github.com/colshrapnel/thebestpdowrapper
Если потренироваться, то https://toster.ru/answer?answer_id=396395#answers_list_answer
 

Фанат

oncle terrible
Команда форума
Хочешь сказать, что PDO можно использовать без обертки? :D
Ну, аффтарами задумывалось имено так. И оно даже работает.
Единственный существенный минус - это идиотизм, с которым execute() возвращает буль, а не себя. Заставляя писать три строчки, когда достаточно одной.

Ну, это если не считать оберткой ваш обожаемый фетиш - DI контейнер, который выдаст инстанс по запросу.
 
Сверху