Is there any way, to pass results of PDO as parameters of the constructor? Let's say, I have the following class:
class Test
{
private $value1;
private $value2;
function __construct($val1, $val2)
{
$this->value1 = $val1; $this->value2 = $val2;
}
}
Then, via PDO driver I select some data from DB, let's say:
SELECT price, quantity FROM stock
$results = $query->fetchAll(PDO::FETCH_CLASS|PDO::FETCH_PROPS_LATE, "Test");
Right now, PDO passess these values directly to the class fields, and bypassing the constructor.
Maybe I am missing something, but I want to pass results from the query to the constructor. Constructor cannot be query-dependent, I want to be able to instantiate this class even without using PDO.
The only way I figured out was using FETCH_FUNC constant and providing a function to create the object through the constructor.
function rowMapper( $price, $quantity)
{
return new Test( $price, $quantity);
}
$results = $query->fetchAll( PDO::FETCH_FUNC, "rowMapper");
Now your objects will only be created using your constructor, instead of having PDO injecting values in private data and breaking the encapsulation.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With