Насколько у меня правильный код ООП php? Осваиваю ООП и перехожу с процедурного стиля, хочу понять правильно ли я усвоил материал, чтобы сразу писать "без костылей"... Вот мой первый класс:class connectDB {
protected $dbh;
protected $error;

protected function connect() {
try {
$this->dbh = new PDO("mysql:host=localhost;dbname=jetjapan_new","jetjapan_jet","GWJfasfw234");
$this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->dbh->exec("set names utf8");
} catch(PDOException $e) {
echo "Произошла системная ошибка. Код ошибки {$e->getCode()}. Уведомление было отправлено администратору!";
}
}
}
class SearchOrder extends connectDB {
public $orderID;
public $create;
public $price;
public $status;
protected $params;
public function getOrderInfo($orderID, $params = "*") {
$this->orderID = (int) strip_tags($orderID);
$this->params = (string) strip_tags($params);
parent::connect();
try {
$this->resultDB = $this->dbh->prepare("SELECT {$this->params} FROM `order` WHERE `id` = :orderID");
$this->resultDB->bindParam(':orderID', $this->orderID);
$this->resultDB->execute();
$this->resultDB = $this->resultDB->fetch(PDO::FETCH_OBJ);
$this->create = $this->resultDB->addtime;
$this->price = $this->resultDB->price;
$this->status = $this->resultDB->status;
} catch(PDOException $e) {
echo "Произошла системная ошибка. Код ошибки {$e->getCode()}. Уведомление было отправлено администратору!";
}
}
public function changeOrder($orderID, $column, $value) {
$this->orderID = (int) strip_tags($orderID);
$this->column = (string) strip_tags($column);
$this->value = (string) strip_tags($value);
parent::connect();
try {
$this->resultDB = $this->dbh->prepare("UPDATE `order` SET {$this->column} = :value WHERE `id` = :orderID LIMIT 1");
$this->resultDB->bindParam(':value', $this->value);
$this->resultDB->bindParam(':orderID', $this->orderID);
$this->resultDB->execute();
$this->resultDB = $this->resultDB->rowCount();
return $this->resultDB;
} catch(PDOException $e) {
echo "Произошла системная ошибка. Код ошибки {$e->getCode()}. Уведомление было отправлено администратору!";
}
}
}
Насколько правильный, удобный код?! Просьба без шуточек, только конструктив, спасибо :)

21 Авг 2019 в 07:01
190 +1
0
Ответы
1

В целом ваш код ООП на PHP выглядит неплохо и соответствует основным принципам объектно-ориентированного программирования. Однако, есть несколько моментов, которые стоит улучшить:

Именование класса connectDB не очень точно отражает его функциональность. Рекомендуется назвать класс более общим образом, например, Database.

В методе connect() класса connectDB лучше не делать вывод ошибки на экран, а выбросить исключение и обработать его в вызывающем коде.

В методах getOrderInfo() и changeOrder() класса SearchOrder параметры необходимо провалидировать более строго, например, проверять тип данных и наличие обязательных аргументов.

Рекомендуется добавить метод для отключения соединения с базой данных после выполнения запросов.

При обработке исключений лучше логировать ошибку в файл или базу данных, а не просто выводить ее на экран.

Не забывайте про работу с транзакциями и защиту от SQL инъекций при использовании пользовательских данных в SQL запросах.

Надеюсь, эти рекомендации помогут вам улучшить ваш код и стать более опытным в области ООП на PHP. Успехов в изучении объектно-ориjsonнтированного программирования!

20 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир