Konstruktorów PHP niemożna przeładowywać (tak są różne triki). Poszukuje jakiegoś profesjonalnie zrobionego przykładu klasy gdzie obiekt powstaje przez wprowadzenie danych do formularza lub odczytu z bazy. Myślałem o zrobieniu tego przez konstruktor z wyborem metody i warunkiem if. Do tego jaka jest "uznawana" metoda zapisu danych klasy w bazie? Zapis wywołany z konstruktora przy odczycie danych z formularza.......
Jeżeli ktoś ma przykład klasy z wprowadzaniem danych z fomularza lub odczytu z bazy danych, załatwiło by to sprawę.
Posuwam się do przodu, dlatego zapytam nieco inaczej. Obiekt klient posiada funkcje readData (odczyt z bazy). Jak w podejściu obiektowym wywołać ją tyle razy ile jest klientów w bazie aby wyświetlić wszystkich? Jedyne co mi wychodzi to "staromodne" i "niepraktyczne" i wogóle "najgorsze" procedury odczytujące bazę danych i dopiero wywołujące funkcje obiektu.
Znalazłem rozwiązanie swojego problemu lecz coś mi umyka. Stworzyłem klasę z funkcja static, problem polega na tym że nie moge się dobrać do teoretycznie zapisywanych zmiennych obiektu w celu ich wyświetlenia.
{ $db=dbconnect(); $query="SELECT uczen.id, uczen.imie, uczen.nazwisko, uczen.plec, uczen.urodziny, uczen.telefon, klasa.rok, klasa.litera FROM uczen LEFT JOIN (klasa) ON (klasa.id=uczen.klasa)"; if (!$result) { } $i=0; { #print $key['imie']; #tutaj wyświetla prawidłowe wartości Podobnie w konstruktoże $this->$imie zwraca wartość $students[$i]= new student($key['imie'],$key['nazwisko'],$key['plec'],$key['litera'],$key['urodziny'],$key['telefon'],$key['id'],$key['rok']); $i++; } return $students; } public function show() { }
<?php include 'modules/global.php'; include 'modules/class.php'; $table =student::student_list(); #$table[0]->imie = 'name'; print $table[0]->imie; #nie wyświetla żadnej wartości; zdjęcie komentarza z lini wcześniejsze daje oczekiwany wynik $table[0]->show(); ?>
Trochę za dużo znaków $ w konstruktorze.