Jeżeli jest sens, to proszę jeszcze o odpowiedź na pytanie, jak ta klasa u Was by wyglądała?
Moja klasa GenericObject posiadałaby następujące pola i metody:
[PHP] pobierz, plaintext
- abstract class GenericObject
- {
- private $id; // id w bazie danych przechowywanego obiektu
- private $loaded; // wczytane dane
- private $data; // dane zmienione
- private $modified; // tablica booleanów przechowujących infomację o tym, czy dane pole zostało zmienione
- static private $tableName; // nazwa tabeli, w której są przechowywane rekordy tej klasy
- final protected function toCollection($result);
- /* powyższa metoda na podstawie wyniku zwracanego przez mysql_query("SELECT ... "); zwraca kolekcję obiektów klasy dziedziczącej po GenericClass */
- protected function load(); // wczytuje dane z bazy danych
- protected function delete(); // usuwa dane z bazy danych
- // powyzsze funkcje sa protected zeby uzytkownik klasy mogl je modyfikowac
- protected function setFields(); // jezeli uzytkownik klasy sam nie zdefiniowal metod load i delete, to potrzebne sa pola w tej tabeli
- final public function __construct($id = 0); // jezeli bez argumentu, to tworzy nowy obiekt, a jezeli z argumentem, to wczytuje obiekt o podanym id
- final public function get($field); // zwraca wartosc pola $field
- final public function set($field, $value); // ustwia wartosc pola
- final public function fromArray($array); // zapisuje odpowiednie wartosci na podstawie tablicy, dzieki temu mozna napisac obiekt->fromArray($_POST)
- static public function createTable(); // tworzy tabele w bazie danych dla klasy
- static public function setTableName($tableName); // ustawia zmienną $tableName
- public function isValid($field, $value); // sprawdza poprawność
- public function save(); // zapisuje dane w bazie danych
- public function forceLoaded(); // ustawia loaded na true
- }
P.S. Możliwe, że mój powyższy kod zawiera jakieś błędy, albo czegoś nie przewidziałem, proszę wtedy o uprzejme opisanie, co robię nie tak.