class klasaKoszyk { private function __construct() { } //metoda, ktora tworzy instancje klasy tylko raz, jesli instancja klasy juz istnieje to jest zwracany jej //obiekt, a nie jest tworzona nowa, druga instancja: { if( self::$koszyk_na_zakupy == false ) { self::$koszyk_na_zakupy = new klasaKoszyk(); } return self::$koszyk_na_zakupy; } public function addToCart($id_produktu) { //jesli zmienna sesji o danym id_produktu istnieje to zwieksz ilosc tego produktu o 1 if(isset($_SESSION['koszyk'][$id_produktu])) $_SESSION['koszyk'][$id_produktu]++; //dla tej linii wywala blad za drugim razem //jesli zmienna sesji o danym id_produktu nie istnieje to ustal ilosc tego produktu na 1 else $_SESSION['koszyk'][$id_produktu]=1; } }
Dodawanie do koszyka produktu o id=1:
$koszyk = klasaKoszyk::getInstance(); $koszyk->addToCart(1);
Za pierwszym razem dziala, a za drugim juz wywala blad:
Fatal error: Cannot use object of type klasaKoszyk as array in C:
\Program Files\WebServ\httpd\klasy\klasaKoszyk.php on line 30
Dlaczego ? (Linia nr 30 to w istocie linia nr 25 w klasie powyzej)