<?php
require_once 'UnauthorizedState.php';

class 
User
{
    private 
$_id;
    private 
$_state;
    private 
$_count 0;

    public function 
__construct($id)
    {
        
$this->_id $id;

        
$this->_state UnauthorizedState::getInstance();
        
$this->resetCount();
    }

    public function 
switchState()
    {
        echo 
'状態遷移:' get_class($this->state) . '→';

        
$this->_state $this->_state->nextState();

        echo 
get_class($this->_state) . '<br />';

        
$this->resetCount();
    }

    public function 
isAuthenticated()
    {
        return 
$this->_state->isAuthenticated();
    }

    public function 
getMenu()
    {
        return 
$this->_state->getMenu();
    }

    public function 
getUserId()
    {
        return 
$this->_id;
    }

    public function 
getCount()
    {
        return 
$this->_count;
    }

    public function 
incrementCount()
    {
        
$this->_count++;
    }

    public function 
resetCount()
    {
        
$this->_count 0;
    }
}