Som nævnt i dokumentationen:
public array PDOStatement::fetchAll ([ int $fetch_style [, mixed $fetch_argument [, array $ctor_args = array() ]]] )
ctor_args
Arguments of custom class constructor when the fetch_style parameter is PDO::FETCH_CLASS.
det samme argument er tilgængeligt for setFetchMode
public bool PDOStatement::setFetchMode ( int $PDO::FETCH_CLASS , string $classname , array $ctorargs )
Jeg ville implementere dette i overensstemmelse hermed:
Tilføj først en egenskab $ctorArgs til \Core\Model
med standardværdien null
. Efterfulgt af at erstatte den nuværende setFetchMode opkald
if (!is_array($this->ctorArgs)) throw new \Excpeption("\"ctorArgs\" must be of type array");
$stm->setFetchMode(PDO::FETCH_CLASS, get_called_class(), $this->ctorArgs);
Og tilføj endelig en egenskab $ctorArgs til \App\Models\Admin\Photo
med standardværdien array("picture")
.
Dette vil fortælle koden, at din konstruktør forventer parameteren $picture .
Jeg ville overveje at bruge en konstant i stedet for en ejendom, men det afhænger af, hvordan du beslutter dig for at implementere dette.