私はPHPでカスタムDBテーブルマッパーを開発中です。 PHPではプロパティにアクセスするために「仮想メソッド」のようなものを作ることは可能ですか?メソッドのように、実際には存在しません。動的PHPメソッド
例:クラス "user"は "$ name"というプロパティを持っていますが、私はこのメソッドの "Get"メソッドを作成したくありませんが、このようにvirtualメソッドでプロパティにアクセスしたい:$ user-> GetName();
私はConventionsで作業することを考えていました。したがって、 "仮想"メソッドが呼び出されるたびに、それを捕まえ、接頭辞 "Get"または "Set"があるかどうかをチェックします。
接頭辞が「Get」の場合、「Get」の後に部品を取り除いて小文字にして、アクセスするプロパティを持ってください。
私の考え(擬似コード):
public function VirtualMethodCalled($method_name)
{
//Get the First 3 Chars to check if Get or Set
$check = substr($method_name, 0, 3);
//Get Everything after the first 3 chars to get the propertyname
$property_name = substr($method_name, 3, 0);
if($check=="Get")
{
return $this->{$property_name};
}
else if($check=="Set")
{
$this->{$property_name};
$this->Update();
}
else
{
//throw exc
}
}
PHPには、あなたが使用できるいくつかの[魔法の方法](http://php.net/__get)があります。 –
おそらくクロージャを調べることができます。 PHPでのクロージャは、実際にグローバル名前空間に登録されていないone-off *の関数/メソッド*です。あなたが望むなら、捨て去る機能。通常、現在使用されている関数/メソッドに機能を拡張するために使用されます。例3を参照してください:http://php.net/manual/en/functions.anonymous.php – Marcus