我正在使用PDO将行提取到对象。我有两个问题:
1-在对象中使用私有属性,并使用__get()方法返回它们,该方法可能会调用另一个函数本身,例如getLabel(),当检索大量记录时,这会如何影响php性能?可以接受吗?
一个例子:
class model
{
private p1;
public p2;
function __get($name)
{
return $this->{'get'.$name}();
}
function getP1()
{
return '';
}
}
$obj = new model;
$obj->p1 VS. $obj->p2
2-对于有很多列的类,在类定义中定义所有这些列,然后在检索大量记录时选择其中的一些列,这会如何影响php内存使用,因为它们是在具有null值的对象中定义的?可以接受吗?
我不是一排接一排的,也不是一次全部的。
一个例子:
class model
{
public $p1 = null;
public $p2 = null;
public $p3 = null;
public $p4 = null;
public $p5 = null;
public $p6 = null;
public $p7 = null;
public $p8 = null;
public $p9 = null;
public $p10 = null;
}
sql: select p1, p2 from model limit 100
每个对象有8个未使用的属性。这对php性能和内存有何影响?
据我所知,教义使用这两种模式。他们如何克服这种影响php性能的问题
在对象中使用私有属性,并使用__get()方法返回它们,该方法可能会调用另一个函数本身,例如getLabel(),当检索大量记录时,这会如何影响php性能?可以接受吗?
与其他常见的变通方法相比,魔术方法的成本很高。如果没有看到你的申请,很难说到底有多贵。
__使用PHP 获取/__set/__call性能问题
对于具有许多列的类,在类定义中定义所有这些列,然后在检索大量记录时选择其中的一些列,这将如何影响php内存使用,因为它们是在具有null值的对象中定义的?可以接受吗?
只要您使用PDO迭代结果集,您的内存就不会太高。但是,如果您对结果进行迭代并将其保存到集合中,那么整个结果集将占用大量内存。一如既往,您希望选择尽可能少的字段和行。