Возможно, это обсуждается несколько раз, но я хочу знать, как ООП может помочь мне улучшить мой код. Я использовал код в процедурной форме. Однако с разумной логикой. Куски кода, используемые во всем проекте, обернуты функциями. однако все функции помещаются в большой файл functions.php (который я считаю не очень эффективным). , например, это функция для проверки, если продажи истек или нет:php - как улучшить код с помощью OOP
function is_sales_expired($salesId, PDO $conn) {
$now=time();
$sql="SELECT * FROM specialoffers WHERE id=:id";
$st=$conn->prepare($sql);
$st->bindvalue(":id",$salesId,PDO::PARAM_STR);
$st->execute();
$sales_array=$st->fetchAll();
if($now<$sales_array[0]['finishdate'] && $now>$sales_array[0]['startdate']) {
return FALSE;
} else {
return TRUE;
}
}
Теперь Ive решил перейти к ООП и конвертировать мой код в ООП. Поэтому я создал классы и помещал функции, связанные с определенным поведением, в каждый класс. например, класс продаж, который имеет is_sales_expired()
и другие методы, связанные с продажами. свойства и конструктор выглядеть следующим образом:
class Sales
{
private $conn;
private $stockObj;
private $userObj;
private $cartObj;
private $randomObj;
function __construct(PDO $conn)
{
$this->conn = $conn;
$this->stockObj = new Stock($this->conn);
$this->userObj = new User($this->conn);
$this->cartObj = new Cart($this->conn);
$this->randomObj = new Random($this->conn);
}
//methods come here//
}
И тогда я загрузить классы в моем коде с помощью spl_autoload_register
, так что я не должен включать все файлы классов в любом другом файле. Хорошо с этим подходом методы вызова немного проще, и мне не нужно передавать PDO $conn
каждому вызову метода, и он уже передан с помощью конструктора.
Ну, все это хорошо, и все связанные коды теперь находятся в одном месте и, возможно, немного легче управлять. Но у меня такое чувство, что ООП должен предложить гораздо больше. с Подходом, который я использовал, я не чувствую, что теперь мой код более эффективен и поддерживается. Я чувствую, что должен был пропустить некоторые понятия здесь. Ваша помощь приветствуется.
Возможный дубликат [OOP vs Functional Programming vs Processural] (http://stackoverflow.com/questions/552336/oop-vs-functional-programming-vs-procedural) –