Прежде всего, нет смысла присваивать переменную в конструкторе, потому что она будет перезаписана. Когда вы передаете CI URL-адрес, такой как localhost / sitename / player / show_profile / PlayerName, все, что передано методу get (т.е. PlayerName) get, устанавливается в качестве параметров. Следовательно, ваша переменная в
public function show_profile($player_name){
уже установлен, когда вы получаете код метода.
Во-вторых, я согласен с Питером:
protected $player_name;
для того, чтобы сделать его глобально доступным в контроллере. НО, я не согласен с установкой в конструкторе. Если у вас есть другой метод в этом контроллере, который передает переменную в этом месте, вы получите там неверные данные. Установите его в метод, который вы назвали:
public function show_profile($player_name){
$this->player_name = $player_name;
$data['player_stats'] = $this->player_model->get_stats( $player_name );
$this->load->view('player/player_stats', $data);
}