0

私は用語が曖昧で、検索を試みましたが、これまでのところ賢明ではありません。PHP で OOP を学習しようとしています。値とキーのペアを DB に格納する構成クラスを作成しようとしています。それは完全にうまく機能していますが、私が望んでいる方法ではありません。

とにかく、これが私がすることです:

$config=new Config();
$keyValue=$config->keyName;                      // Get key value
$config->keyName=$newKeyvalue;                   // Set key value
$description=$config->getDescription($keyName);  // get description
$config->setDescription($keyName, $description); // set description

これが私がやりたいことです(関連するものであるため、最後の2行のみ):

$description=$config->keyName->description;     // get description
$config->keyName->description=$newDescription;  // set description

キー値の設定/取得は_get( )/ _ set() で行いますが、キーの「サブプロパティ」を同じ方法で設定するにはどうすればよいですか?

編集:解決しました。_ get/ _set/_ isset/ _unset が適切に動作する作業クラスは次のとおりです: http://pastebin.com/TFAA8Dcq

(注意: エラーチェックはほとんど行われず、このクラスでは動的なオブジェクト名を設定できますが、これはおそらく世界で最も安全なことではありません)

4

1 に答える 1

0

「keyName」プロパティもクラスにする必要があります。たとえば、次の$config->keyName = new stdClass;ように設定できます$config->keyName->property = "something else";

ただし、その場合、keyName プロパティを文字列に直接設定することはできなくなりました。ただし、PHP クラスに __toString マジック メソッドを実装して、Class が暗黙的に文字列として扱われる場合に文字列変数を自動的に返すことができます。

于 2013-09-13T20:08:12.750 に答える