【发布时间】:2016-11-16 15:29:50
【问题描述】:
我对 PHP 中的实例有疑问。我创建了一个基本上将查询发送到数据库的类。问题是每次我想执行查询时创建一个实例或者只是使用相同的实例来覆盖分配给该类的内存是正确的。 例如:
//Select
$conversation = new mQuery();
$conversation->operation = "select";
$conversation->data = array("bla", "bla", "bla");
$result = $conversation->execute();
//Update
$conversation = new mQuery();
$conversation->operation = "update";
$conversation->data = array("bla", "bla", "bla");
$result = $conversation->execute();
对比
//Create instance ONCE
$conversation = new mQuery();
//Select
$conversation->operation = "select";
$conversation->data = array("bla", "bla", "bla");
$result = $conversation->execute();
//Update
$conversation->operation = "update";
$conversation->data = array("bla", "bla", "bla");
$result = $conversation->execute();
提前致谢。
【问题讨论】:
-
通常我们为每个操作创建一个新对象,特别是如果对象只是为了那个。它还使代码更清晰,更容易理解。该语言应该为您处理垃圾收集
-
这也取决于类的实现。如果您忘记调用
->data并且它会重复使用上一次运行的数据怎么办? -
@FirstOne 这就是我怀疑的原因。也许最好每次都创建一个新实例来清理内存,这样如果有错误的变量它会失败而不是从之前的赋值中获取它。
-
你几乎不需要担心这个问题。我怀疑你会运行这么多的查询,这会给你带来麻烦。 (不过,质疑是有效的)。
-
你可以做的是,一旦你完成了对象,enable it to be destroyed。然后,只需在每次需要运行查询时创建一个新对象(问题的第一个选项)。