Obiekt "koszyk" zawierający cenę oraz ilość

0

Dlaczego ta klasa nie działa i nie odpala. Dziękuję za pomoc

<?php

class basket

{

public $id;
public $ile;
public $cena;

function _construct($id, $cena, $ile){

$this->id = $id;
$this->cena = $cena;
$this->ile = $ile;

}

};

function add()
{

$_SESSION['basket'] = array();


if(isset($_SESSION['basket'][$id])){
$_SESSION['basket'][$id]->ile++;
$_SESSION['basket'][$id]->cena = $cena;

echo "id: $this->id <br> ";
echo "id: $this->cena <br> ";
echo "id: $this->ile <br> ";

};

$basket1 = new basket(1,20,30);
$basket1->add();

?>

Kod błędów:

Ta strona nie działaSerwer serwer2232156.home.pl nie może teraz obsłużyć tego żądania.
HTTP ERROR 500
3

Ogarnij formatowanie bo razi tak, że nikomu się nie będzie chciało ci odpowiedzieć

4

jak na moje to metoda add jest poza klasą, dodatkowo tutaj:

$_SESSION['basket'] = array();


if(isset($_SESSION['basket'][$id])){

ustawiasz zmienną na pustą tablicę a potem sprawdzasz czy coś w niej jest. Niewiele pamiętam z php ale to chyba się nie uda

5

Tradycyjnie, błąd na błędzie.
Konstruktor klasy to metoda magiczna. Powinna zaczynać się od dwóch podkreśleń. Poza tym warto nadać konstruktorowi modyfikator dostępu publicznego. Czyli coś takiego public function __construct() . Zainstalowałeś już jakieś IDE z podpowiedzią składni np Vscode? Nawet Notpad++ pewnie by ten błąd wyłapał.

1
  1. Pierwsze zasadnicze pytanie: po co dodajesz tutaj klasę? Masz jakiś powód ku temu, czy chcesz sobie popróbować ich używanie więc wrzucasz ją byle gdzie? Bo jeśli tak, to trochę srednio.
  2. Nazwałeś funkcję _construct (zamiast __construct), a więc jest to zwykła funkcja a nie konstruktor.
  3. Funkcja add() jest poza klasą, więc nie jest to metoda w basket.
  4. Nazywaj pola po angielsku, czyli id, price, amount
  5. Polecam nie stosować zamykającego ?>, bo to jest to samo co echo.
  6. Nadmiarowy średnik na końcu deklaracji klasy.
  7. Dodaj formatowanie (czyli wetnij odpowiednie linijki spacjami)
  8. Warto dodać jawne modyfikatory dostępu public, tak jak pisał @jurek1980
0

Inna sprawa, że add i tak będzie zerowało się w sesji przy każdym wywołaniu :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1