2010-06-05 3 views
1

J'ai quelques exemples de tableau pousser à un tableau dans l'objet de session:Array pour tableau pousser en session Zend objet

class someClass extends someOtherOne { 

...////// some other code here that starts session and creates namespace 

    public function __add2Session($a,$b) { 

    $namespc = $this -> __getnewNameSpace(); //returns a Zend Session Namesapce (object) 

     if (!isset($namespc -> {$a})) { $namespc -> {$a} = array(); } 

      array_push($namespc -> {$a}, $b); 

     } 

    } 


...///////////// 


$item=array(1=>"one",2=>"two",3=>"three",4=>"four",5=>"five",6=>"six",7=>"seven"); 

$k = new someClass(); 
$cart = new Zend_Session_Namespace('Cart'); 
$k -> __add2Session("items",$item); 

Le résultat est quand je recharger la page plusieurs fois - la valeur de $cart -> items lors de la session obtient écrasé et non peuplé. Quelqu'un peut-il expliquer pourquoi cela se produit et comment résoudre ce problème?

Je veux avoir $cart -> items être un "tableau dans le tableau" comme:

$cart -> items = array(array(1=>"one",2=>"two"), array(1=>"two",2=>"three")); 

Répondre

1

Quelle est la version PHP utilisez-vous?

Il se pourrait que vous devez obtenir le tableau d'abord et réassigner après la manipulation:

$tmp = $namespc->{$a}; 
array_push($tmp, $b); 
$namespc->{$a} = $tmp; 

Je propose de lire Zend_Session - Working with Arrays et suivre leurs exemples.

Mise à jour:

Comme vous utilisez PHP 5.2, vous pourriez avoir à faire ce que je proposais. Dans la documentation, il dit:

En raison de l'histoire de la mise en œuvre des méthodes magiques PHP, la modification d'un tableau à l'intérieur d'un espace de noms ne fonctionne pas dans les versions de PHP antérieures à la 5.2.1.

+0

PHP version 5.2 – user358643

+0

@ kate-koopy: Alors c'est probablement le problème. –

+0

@Fekix Kling Je viens de regarder ma version exacte est 5.2.6 et comme http://framework.zend.com/issues/browse/ZF-800 bug ne devrait pas se produire. Mais ça le fait :( – user358643

Questions connexes