Wyświetlanie cennika z ceną brutto i netto

0

Dlaczego poniższa klasa nie działa, gdzie jest błąd ? Dziękuję za pomoc.

<html>
<body>

<?php

class Cennik {

public $cena = 20;
public $vat;
public $dochodowy;

return float;

public function brutto() {
$cena = 20;

return $this->vat * $cena;

}

};

$aktualnycennik = new Cennik();

$aktualnycennik->vat = 22;

echo "cena netto: { $aktualnycennik->cena } zł<br>";
echo "cena brutto: { $aktualnycennik->brutto() } zł<br>";

?>
</body>
</html>

9

a co to w ogóle jest za zlepek bezsensownych linii kodu?? Gdzie jest jakiekolwiek formatowanie? Po ch*** tyle pustych linii?? Co robi tam return float;??

Otwórz jakikolwiek kurs online (np. pierwszy z googla https://kursphp.com/programowanie-obiektowe-php/ ) i POCZYTAJ trochę zamiast próbować wkleić losowe linijki kodu w losowe miejsca

EDIT: bo pewnie zaraz się ktoś przyczepi, że co się dosrywam - żeby ten kod był chociaż w jakiś sposób sformatowany (są darmowe onlinowe beautifiery), żeby było napisane co nie działa no i tagów nadupionych nie wiadomo po co (co ten kod ma wspólnego z mysqlem albo javascriptem?)

5

Byłem ciekawy czy ten słynny GPT poradzi sobie z tematem. Poniżej jego odpowiedź ;)
I taka porada dla @telepatia - zadając pytanie postaraj się opisać błąd, wskazać dlaczego uważasz, że coś nie działa, co się dzieje nietypowego itp. Bo samo "czemu jest źle" to tak dość kiepsko :P

W podanej klasie jest kilka błędów:

  1. W deklaracji pola return float; nie ma sensu - nie powinno to być w tej części klasy.
  2. W metodzie brutto() zmienna $cena jest zdefiniowana jako zmienna lokalna, a nie odwołuje się do pola cena klasy. Aby odwołać się do pola klasy, należy użyć operatora $this-> przed nazwą pola.
  3. W wywołaniu właściwości klasy w metodzie brutto() brakuje operatora -> przed nazwą właściwości.

Poprawiony kod klasy Cennik powinien wyglądać tak:

class Cennik {
  public $cena = 20;
  public $vat;
  public $dochodowy;

  public function brutto() {
    return $this->vat * $this->cena;
  }
}

$aktualnycennik = new Cennik();

$aktualnycennik->vat = 22;

echo "cena netto: {$aktualnycennik->cena} zł<br>";
echo "cena brutto: {$aktualnycennik->brutto()} zł<br>";

W tym kodzie usunięto zbędne elementy, poprawiono błędy składniowe i zmieniono sposób wywołania właściwości klasy w metodzie brutto().

5

Widzę, że kolega adamon ma nowe konto.
Poprzednie nie wiem czy było zbanowane, czy coś innego.
Przeczytaj jakąś książkę wreszcie, używaj IDE i naucz się pisać posty.
Jeśli to co tu wkleiłeś to część jakiegoś kursu - zmień kurs.

1

vat = 22? Bardzo stare źródło - lepiej je zmień.

0
jurek1980 napisał(a):

Jeśli to co tu wkleiłeś to część jakiegoś kursu - zmień kurs.

Dzięki stokrotne dzięki odpaliło w końcu. Kupiony kurs zawierał ten błąd.

1
telepatia napisał(a):

** Kupiony kurs zawierał ten błąd.**

Aż tak beznadziejnych kursów to nie ma. Daj link.

2
telepatia napisał(a):
jurek1980 napisał(a):

Jeśli to co tu wkleiłeś to część jakiegoś kursu - zmień kurs.

Dzięki stokrotne dzięki odpaliło w końcu. Kupiony kurs zawierał ten błąd.

Nie sądzę, żeby kurs zawierał taki błąd.
Następnym razem wrzuć jakiś link do lekcji/tematu.
Pamiętaj aby formatować kod i używać na forum do kodu odpowiednich tagów

0

Ten kod powinien wyglądać tak:

<?php

class Cennik
{
    public $cena = 20;
    public $vat;
    public $dochodowy;

    public function brutto()
    {
        return $this->vat * $this->cena;
    }
}

$aktualnycennik = new Cennik();
$aktualnycennik->vat = 22;

?>
<html>
<body>
cena netto: <?php echo htmlEntities($aktualnycennik->cena); ?><br>
cena brutto: <?php echo htmlEntities($aktualnycennik->brutto()); ?><br>
</body>
</html>

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.