ドキュメントに記載されているように:
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.
setFetchModeにも同じ引数を使用できます
public bool PDOStatement::setFetchMode ( int $PDO::FETCH_CLASS , string $classname , array $ctorargs )
それに応じてこれを実装します:
まず、プロパティ $ ctorArgsを追加します \Core\Model
へ デフォルト値はnull
。続いて、現在の setFetchModeを置き換えます 呼び出し
if (!is_array($this->ctorArgs)) throw new \Excpeption("\"ctorArgs\" must be of type array");
$stm->setFetchMode(PDO::FETCH_CLASS, get_called_class(), $this->ctorArgs);
最後に、プロパティ $ ctorArgsを追加します \App\Models\Admin\Photo
へ デフォルト値はarray("picture")
。
これにより、コンストラクターがパラメーター $ pictureを期待していることがコードに通知されます。 。
プロパティの代わりに定数を使用することを考えますが、それはこれをどのように実装するかによって異なります。