0

I'm using PDO to fetch rows to object. I have two question about that:

1- Using private properties in object and returning them using __get() method which may call another function itself for example getLabel(), how this affect php performance when retrieving a lot of records? Is it acceptable?

an example:

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- For class with many columns, defining all those columns in the class definition, then selecting some of them when retrieving a lot of records, how this affect php memory usage as they are defined in objects with null values? is it acceptable?

I don't fetch the rows one by one and not all at once.

an example:

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

each object has 8 unused property. how this affect php performance and memory?

As much as I know doctrine use these two patterns. how do they overcome this affecting php performance?

1 Answer 1

1

Using private properties in object and returning them using __get() method which may call another function itself for example getLabel(), how this affect php performance when retrieving a lot of records? Is it acceptable?

Magic methods are expensive compared to other common workarounds. Exactly how expensive is hard to say without seeing your application.

__get/__set/__call performance questions with PHP

For class with many columns, defining all those columns in the class definition, then selecting some of them when retrieving a lot of records, how this affect php memory usage as they are defined in objects with null values? is it acceptable?

As long as you iterate over the result-set using PDO your memory shouldn't be too high. However, if you iterate over the results and save them into a collection then your entire result-set will be hogging a lot of memory. As always, you want to select the LEAST amount of fields and rows possible.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.