今日私はMVCに関するチュートリアルを読んでいました。このメンバはprivateメンバー値にアクセスするためにmagic-methods(__get & __set())を使用していました。 (LINK) 最初に私は__getと__setが何をするのか混乱しましたが、インターネットを読んだ後、私は最後に、このメソッドが、外部からアクセスできない場合に呼び出されることを発見しました。より簡単に理解するために、そのIMOの方法 - 私は私が推測する通常のゲッターとセッターを使用することができます__get()&__set()メソッドの意味
class Foo { private $bar; public __set($value) { $this->bar = $value; } public __get() { return $this->bar; } }
:
を これまでのところ...はしかし、それは、このようなコードを持ってしても意味がありません。
class Foo { private $bar; public setBar($value) { $this->bar = $value; } public getBar() { return $this->bar; } }
__get & __setで外部のメンバーにアクセスしたい場合は、そのメンバーを公開することもできます。だから、私はそれをどうしたらいいのでしょうか? これらの2つの方法の意味は何ですか(私は例を挙げて)教えてもらえますか?
あなたが提供したリンクの一例として、あなたが書いたものの近くに何かを見ないでください。彼は配列を使用しています、 '$ this-> vars [$ index] = $ value ; '。そのため、 '__set'と' __get'を使ってインデックス内のキーにアクセスするという意味はかなり合法です。または、アクセサごとにすべてのキーを書きたいと思いますか? – dbf
それは本当ですが、私は別のチュートリアルでもこれを見てきました....そして、通常のgetterとsetterを使って配列を設定することもできますか? – Petschko
私が書いたように、それを使うのは合法ですが、私はそれを使うのが賢明だとは言いませんでした;) – dbf