オーバーフロー __set および __get メソッドを使用していますが、プライベート/パブリック クラス変数をエミュレートできるようにしたいと考えています。
これに対する答えはすでに出ていると確信していますが、掘り下げていて、何も見つかりません。私がやろうとしていることの線に沿った例を示してみましょう。
<?php
class Person
{
public function test()
{
return $this->whereami();
}
public function whereami()
{
if (method_called_inside_class()) {
return 'private';
} else {
return 'public';
}
}
}
$person = new Person();
$person->test(); // 'private'
$person->whereami(); // 'public'
私が望むのは、オブジェクト内で呼び出されたときと、外部から呼び出されたときのメソッドの機能が異なることです。別の引数を追加して、動作の変更を通知したり、別の関数を作成したりできることはわかっています。しかし、私がここでやろうとしていることが、他の 2 つのオプションの代わりに何らかの方法で可能であれば、それは素晴らしいことです!