__destruct()メソッドでset session varを試してみます。 メソッド__destruct()は実行されていますが、セッション変数は設定されていません。 __contruct()や他のメソッド(test()など)のセッションは、期待通りに機能します。__destruct()メソッドでsession varを設定できないのはなぜですか?
public function test()
{
$_SESSION['MyVarTest'] = rand(200,300); ← working correctly
}
public function __destruct()
{
echo 'called';
$_SESSION['MyVar'] = rand(1,100); ← not working
}
最新バージョン。今では、ネイティブのPHPセッションと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()'が確実に呼び出されていることをどのように知っていますか? –
はい、この例は完全ではありません。私が考えることができる1つの質問:どのようにスクリプトを停止しますか?最良の例は完全な例であり、私たちは実行することができます。 –