這可能會討論好幾次,但我想知道OOP如何幫助我改進代碼。我習慣以程序的方式進行編碼。但是要有合理的邏輯。整個項目中使用的代碼段都包含在函數中。然而,所有的功能都放在一個大的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;
}
}
現在香港專業教育學院決定搬到OOP和轉換我的代碼OOP。所以我創建了類,並將與特定行爲相關的函數放入每個類中。例如具有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 Procedural]的可能重複(http://stackoverflow.com/questions/552336/oop-vs-functional-programming-vs-procedural) –