Klasy - jakby nie wchodziło

Klasy - jakby nie wchodziło
Colin Neezy
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
0

Próbuję przekształcić skrypt w php z wersji 5+ na najnowszą. Jednak jestem daleko w tyle i nie byłem na bieżąco z coraz to nowszymi wersjami php.

Mam klasę:

Kopiuj
/FILE INFO:
all the funcions we ever need/

class Player{
    function load()
    {
if($this->filename){
        return ($this->contents = @file_get_contents($this->filename))
            && ($this->data = @simplexml_load_string($this->contents));
}

}
}

Teraz chce, aby to zostało wpisane:

Kopiuj
 $player = new Player (basename(mistrzkarate));

if ($player->load())

No i koniec, brak błędów - jakby nie wchodzi w tą klasę (zaznaczam, że w php 5+ wchodziło bez problemu). mistrzkarate - nazwa użytkownika z tablicy.
Ktoś ma jakieś pomysły?

serek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1506
6
  1. Użyj formatowania
  2. To jest jakiś syf. Na pewno to całość kodu?

Zamiast próbować przepisać to na PHP 8, to weź to napisz po prostu od zera. Bo ten kod się do niczego nie nadaje i nie ma prawa działać.

Colin Neezy napisał(a):

No i koniec, brak błędów - jakby nie wchodzi w tą klasę (zaznaczam, że w php 5+ wchodziło bez problemu). mistrzkarate - nazwa użytkownika z tablicy.
Ktoś ma jakieś pomysły?

Tak, naucz się debugowania, chociażby wstaw var_dump. I nie używaj @, bo to powoduje, że błędy nie są wyświetlane, nawet jeśli się pojawią.

LukeJL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8488
1

Do takich pytań lepsze jest ChatGPT.

(może mój post zostanie skasowany przez moderatora, bo już kiedyś podobny został, ale na serio moim zdaniem jeśli ktoś chce wrzucać coś bardzo "low effort", to ChatGPT zwykle lepiej się domyśli niż człowiek, ponieważ człowiek myśli logicznie, a tu logiki brakuje. ChatGPT patrzy na zasadzie prawdopodobieństwa, więc mógłby być bardziej efektywny, bo sobie dopowie to, czego brakuje).

Colin Neezy
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
0

To jest cały kod:
image

jurek1980
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3581
1

To raczej nie jest plik functions.php bo w linii 26 nic nie ma. Błąd masz wskazany. Wszystko wskazuje na to, że szukasz nie w tym pliku/miejscu.
To jakaś duża aplikacja i nie chcesz wkleić całego kodu?

Przeczytaj to kod w obrazku
I następnym razem wklejał już kod tak by można było Ci łatwiej pomóc.

serek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1506
1

Brakuje Ci konstruktora w klasie Player.

Jeśli cały kod jest napisany tak jak ten fragment, to daj sobie z tym spokój. To się nadaje tylko do napisania całkowicie od zera.

Colin Neezy
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
0

Dziękuję wszystkim za wypowiedzi.
Moim błędem było to że nie wiedziałem o __constructor, po jego dodaniu wszystko śmiga jak należy. Raz jeszczę Wam dziękuję 😀

serek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1506
2
Colin Neezy napisał(a):

Dziękuję wszystkim za wypowiedzi.
Moim błędem było to że nie wiedziałem o __constructor, po jego dodaniu wszystko śmiga jak należy. Raz jeszczę Wam dziękuję 😀

To, że działa wcale nie znaczy, że działa tak jak powinno :p Tylko Ci się tak wydaje. Ten kod jest strasznie dziurawy, a to tylko parę linijek jest.

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10227
0
Colin Neezy napisał(a):

Dziękuję wszystkim za wypowiedzi.
Moim błędem było to że nie wiedziałem o __constructor, po jego dodaniu wszystko śmiga jak należy. Raz jeszczę Wam dziękuję 😀

A jest coś takiego jak __constructor w ogóle w PHP? 🧐

Colin Neezy
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
0
Riddle napisał(a):
Colin Neezy napisał(a):

Dziękuję wszystkim za wypowiedzi.
Moim błędem było to że nie wiedziałem o __constructor, po jego dodaniu wszystko śmiga jak należy. Raz jeszczę Wam dziękuję 😀

A jest coś takiego jak __constructor w ogóle w PHP? 🧐

Poprawka __construct :D

Obecnie wszystko hula, nawet slashe... Mam coś takiego jak http://example.com/////////////// i dodaje te ukośniki, nie wiem co może być powodem, wszystkie błędy które pokazywało poprawiłem (duzy przeskok jak na php 8.3.7). Ktoś coś podpowie ?

jurek1980
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3581
1

Jeszcze nie ma PHP 8.7.3.
Proponuję: nowy problem, nowy wątek + kod źródłowy odpowiednio wklejony.
Przepisałeś poprzedni i nie ma już np. @ przed funkcją?

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.