2017-06-02 7 views
0

私はsession-Arrayの値を更新しようとしていますが、動作しません。 初期設定:Phalcon:セッション内の配列の値を更新できません

$bag = new SessionBag('p-' . $productId); 
$bag->person = ['name' => 'john', 'age' => 25]; 

[更新:

$bag->person['age'] = 30; 

年齢はまだ25ですその後(xdebugのセッションでチェック)。

答えて

1

Webサーバーで警告/通知を有効にすると、「注意:オーバーロードされたプロパティの間接的な変更」のようなものが表示されます。

あなたが望むことを達成するには?

$bag = new \Phalcon\Session\Bag('testest'); 
$bag->person = ['name' => 'john', 'age' => 25]; 
// $bag->person['age'] = 30; // Triggers Notice and will not work 

$temp = $bag->person; 
$temp['age'] = 44; 
$bag->person = $temp; 

print_r($bag); 

[人] =>アレイ( [名] =>ジョン [年齢] => 44)

これがなぜ起こるかあなたが興味を持っている場合は、いくつかの説明を読むことができますここにPHP - Indirect modification of overloaded property

+0

しかし、それはいくつかの人々のために働く? https://forum.phalconphp.com/discussion/6015/storing-an-array-in-a-phalcon-session – EugenA

+0

私はそれがPHPのバージョンやサーバーの設定、確かな友人に依存すると思います:( –

+0

@EugenA私は私がPhalconを使ってきた最後の年には私には当てはまりませんでした。あなたがリンクしている投稿は、実際にどのように動作するかではなく、人がどのように動作するのかを示していると思います。あなたはPhalconのセッション抽象化を使う必要はありません。あなたは '$ _SESSION'を簡単に使うことができ、それはスーパーグローバル配列なので、' $ _SESSION ['person'] ['age'] = 30' – Pickle

関連する問題