このように(クラスの外で)使用すると:
$user_agent = $user->user_agent;
メソッド get_user_agent() がコンストラクターで呼び出されます。
ここでマジック __get はメソッド get_user_agent を呼び出し、メンバー変数 user_agent の値を返しません。
それを避ける方法は?
class user
{
private $user_agent;
public function __get($key)
{
$value = null;
if(method_exists($this, "get_$key"))
{
$value = $this->{"get_$key"}();
}
else
{
$value = $this->$key;
}
return $value;
}
public function get_user_agent()
{
$this->user_agent = $_SERVER['HTTP_USER_AGENT'];
}