这可能会讨论好几次,但我想知道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) –