このエラーで多くの質問がありますが、私はまだ正しい解決策を見つける必要があります。私のものは厳密にPHP自体であり、他の人が例を投稿したようなフレームワークではありません。PHPオーバーロードされたプロパティの間接的な変更 - ARRAYS
__set
と__get
でオーバーロードして、データアレイ内でこれらのプロパティを動的に作成しようとしていますが、下の例のようなプロパティを作成しようとするとこのエラーが発生します。しかし、文字列またはintの場合はプロパティを作成できます。なぜ値が渡されないのか理解できません。配列フィールドを生成しようとしている
public function __get($name)
{
if (array_key_exists($name, $this->data))
{
return $this->data[$name];
}
}
:
オーバーロードされた財産の間接変更は::フィールドは何の効果
クラスのgetterメソッドを持っていません。 (この例エラー)
$fieldset->fields[] = [
'handle' => 'first_name',
'name' => 'First Name',
];
これはうまく動作しますが、そのは私が尋ね、私はフィールドがインデックス配列になりたいではありません。
$fieldset->fields = [
'handle' => 'first_name',
'name' => 'First Name',
];
これが不可能な場合、誰がより良い方法を持っている場合、私は同じ結果に代わるものを知ってみたいです。みんなありがとう!
最後の例では、連想配列を_is_。最初の例は、多次元配列です。あなたはあなたが探している結果を分かち合うことができますか? –
@MagnusEriksson私は '$ fieldset-> fields'を' fields [0] '、' fields [1] '、' fields [2] 'などにしたいと思います。動的配列 '$ fields [] = 'value1''、' $ fields [] =' value2''を作成するのと同じように、それを説明することができます。 – timothymarois
これは連想配列ではなく、インデックス配列です。しかし、あなたは '__set()'関数でそれを行うことはできません。新しい要素を配列のプロパティにプッシュする独自のメソッドを作成する必要があります。 –