Это интересная топи c.
Вот код, который я использовал для проверки этого ...
Я угнал контроллер по умолчанию Home * app / Controllers / Home . php
protected $session;
public function index()
{
$this->session = \Config\Services::session();
$this->session->set('view_data','Hi there I am from the session');
$page['view_data'] =$this->session->get('view_data'); // Normal way
$page['session'] =$this->session; // Pass in the object
echo view('test_session_view',$page);
}
Затем я создал небольшой тестовый файл, чтобы посмотреть, что будет работать ...
app / views / test_session_view. php
<?php
$local_session = \Config\Services::session(); // Needed for Point 5
?>
<h1>Test_Session_View.php</h1>
<h2>1. Passed in as normal view variable : <?= $view_data; ?></h2>
<h2>2. Passed in as the Session Object : <?= $session->get('view_data'); ?></h2>
<h2>3. The Ole Fashioned SESSION Global way: <?= $_SESSION['view_data']; ?></h2>
<h2>4. The Helper Way: <?= session('view_data'); ?></h2>
<h2>5. The local instance: <?= $local_session->get('view_data'); ?></h2>
По умолчанию $ session (в моем случае $ this-> session) не является «глобальным», и поэтому он должен подчиняться тем же правилам, что и любая другая переменная, передаваемая в View.
Конечно, как вы заметили, $ _SESSION напрямую доступен, поскольку он ГЛОБАЛЬНЫЙ.
А помощник сеанса (Точка 4) дает нам еще более простой доступ, как вы обнаружили.
Это привело к пункту 5, который делает помощник сеанса. Он создает экземпляр сеанса и выполняет «get». Это в System \ Common. php Строка 877 i sh сессия функции (строка $ val = null)
Так что есть несколько способов может получить доступ к данным сеанса в представлении.