【发布时间】:2017-02-17 22:22:49
【问题描述】:
这可能已经讨论过好几次了,但我想知道 OOP 如何帮助我改进我的代码。 我曾经以程序方式编码。但是有一个合理的逻辑。在整个项目中使用的代码片段都包装在函数中。但是所有函数都放在一个大的functions.php文件中(我发现效率不是很高)。 例如,这是一个检查销售是否过期的功能:
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 应该提供更多。使用我使用的方法,我不觉得现在我的代码更有效率和可维护性。我觉得我应该在这里错过一些概念。 感谢您的帮助。
【问题讨论】:
标签: php oop procedural-programming