Я пытаюсь установить сеанс var в методе __destruct(). Метод __destruct() запущен, но session var не установлен. Пока сессия в __contruct() или другие методы (например, test()) работают как ожидалось.Почему я не могу установить сеанс var в методе __destruct()?
public function test()
{
$_SESSION['MyVarTest'] = rand(200,300); ← working correctly
}
public function __destruct()
{
echo 'called';
$_SESSION['MyVar'] = rand(1,100); ← not working
}
Обновленная версия. Теперь я попробую собственный компонент PHP Session и Symfony, и оба они не работают в методе __destruct().
<?php
namespace Project\Modules\Cart\Storage;
use Illuminate\Support\Collection;
class Session
{
/**
* @var \Symfony\Component\HttpFoundation\Session\Session
*/
protected $session;
protected $cart;
public function __construct()
{
$this->cart = new Collection();
$this->session = app('session');
print_r($_SESSION);
}
public function test()
{
$this->session->set('json', rand(1,100)); ← working correctly
$_SESSION['json'] = rand(1,100); ← working correctly
return $this->cart->toJson();
}
public function __destruct()
{
echo 'called';
$_SESSION['MyVar'] = rand(1,100); ← not working
$this->session->set('cart', serialize($this->cart->toArray())); ← not working
}
}
Итак, покажите нам, как вы проверяете все это. –
Как вы знаете, что '__destruct()' вызывается точно? –
Да, пример далек от завершения. Один вопрос, о котором я могу думать: как остановить сценарий? Лучшим был бы полный пример, мы можем работать. –