Toon posts:

PHP class instantie via session variabele

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik zit met het volgende probleem:

Ik maak een instantie aan van een klasse Cart

$cart = new Cart

Deze wil ik in een session variabele zetten zodat ik die instantie in andere php bestanden ook kan gebruiken

hieronder volgt code:

class.php

<?php
session_start();

include "./klasse.php";
session_register ("cart");
$cart = new Cart;
$cart->add_item("10", 8);

$cart->add_item("9999", 3);
$cart->add_item("0815", 2);
$cart->remove_item("0815",2);
?>
<a href="class2.php">click here</a>

class2.php

<?php
session_start();
include "./klasse.php";
if ($cart)
{
$cart->list_array();
}
?>

klasse.php
<?php
class Cart
{
var $items; // Items in our shopping cart

// Add $num articles of $artnr to the cart

function add_item ($artnr, $num)
{
$this->items[$artnr] += $num;
}

// Take $num articles of $artnr out of the cart

function remove_item ($artnr, $num)
{
if ($this->items[$artnr] > $num)
{
if ($num == 0)
{
//uit de lijst verwijderen
}
else
{
$this->items[$artnr] -= $num;
return true;
}
}
else
{
if ($this->items[$artnr] <= $num)
{
//uit de lijst verwijderen
}
else
{
return false;
}
}
}

//schrijf de waarden uit de array naar het scherm

function list_array () {
reset($this->items); //array pointer naar eerste item
while (list ($key, $value) = each ($this->items))
{
$str .= "<b>$key:</b> $value<br>\n";
}
echo $str;

}
}
?>

Het lukt me niet om de instantie door te geven via sessions.
Kan dit wel en zoja hoe? Zoniet, wat is een andere oplossing?

  • tomato
  • Registratie: November 1999
  • Niet online
Kijk eens naar de serialize() functie.

[edit]
Ik betwijfel echter of het nou een mooie oplossing is om heel je class state in een cookie te gooien...

Verwijderd

Topicstarter
Die serialze() functie heb ik niet veel aan.

Het is wel nodig om de complete instantie door te geven, want ik wil de instantie op meerdere plaatsen gebruiken.

Ik zou niet weten hoe ik anders moet doen :(

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Class/Objecten (Weet nooit goed wanneer je welke benaming moet gebruiken) kunnen goed in een sessie worden opgeslagen, maar je moet opletten hoe je ze defineert

Om te registeren.
$cart=new Cart;
session_start();
session_register("cart");

Om dan cart weer te gebruiken moet je eerst het object weer aanmaken.

$cart=new Cart; // Eerst object aanmaken
session_start(); // Dan alle waardes ophalen, deze zal ook $cart vullen.

Programmer - an organism that turns coffee into software.


  • tomato
  • Registratie: November 1999
  • Niet online
Oh sorry, gaat natuurlijk wel met sessions, dacht even dat je direct cookies gebruikte...

Verwijderd

Topicstarter
Bedankt, dit werkt bijna.

Het object is nu nog leeg :(
Pagina: 1