Witam,
próbuję stworzyć klasę do zarządzania bazą danych:
include './config.php';//polaczenie z baza
class DaneUzytkownika
{
protected
$dane = array();
function __construct
($dane = array()) {
$this->dane = $dane;
else if ($dane instanceof DaneUzytkownika)
$this->dane = $dane->pobierzJakoTablica();
}
function __get($parametr)
{
if (isset($this->dane[$parametr])) return $this->dane[$parametr];
return '';
}
// ustawia atrybut
function __set($parametr, $wartosc)
{
$this->dane[$parametr] = $wartosc;
}
// zwraca dane w postaci listy par klucz='wartosc'
// oddzielonych przecinkiem
function pobierzListeDanych()
{
$list = '';
foreach($this->dane as $atrybut => $wartosc)
$list .= $atrybut.'=\''.addslashes($wartosc).'\''; return $list;
}
// zwraca listę atrybutow oddzielonych przecinkiem
function pobierzListeAtrybutow()
{
}
// zwraca listę wartości oddzielonych przecinkiem
function pobierzListeWartosci()
{
foreach($this->dane as $wartosc)
return join(', ', $values); }
// zwraca dane w postaci tablicy (zwraca przez wartosc)
function pobierzJakoTablica()
{
return $this->data;
}
}
class Uzytkownik extends DaneUzytkownika
{
private $dane_w_bazie;
// konstruktor - tworzenie obiektu
function __construct(&$dane, $baza)
{
parent::__construct();
if ($this->dane)
$this->dane_w_bazie = new DaneUzytkownika($this->dane);
}
function zapisz()
{
mysql_query('UPDATE users SET '.$this->pobierzListeDanych().' WHERE '.$this->dane_w_bazie->pobierzListeDanych()); {
$this->dane_w_bazie = $this->dane;
return true;
}
return false;
}
function usun()
{
mysql_query('DELETE FROM users WHERE '.$this->pobierzListeDanych()); }
}
class BazaUzytkownikow
{
function pobierz(DaneUzytkownika $szukamy)
{
$query = mysql_query('SELECT * FROM users WHERE '.$szukamy->pobierzListeDanych()); return false;
}
function dodaj(DaneUzytkownika $dane)
{
mysql_query('INSERT INTO users('.$dane->pobierzListeAtrybutow().') VALUES('.$dane->pobierzListeWartosci().')'); return new Uzytkownik($dane, $this);
return false;
}
function zapisz($dane)
{
if ($dane instanceof Uzytkownik)
$dane->zapisz();
else
$this->dodaj($dane);
}
function usun(Uzytkownik $uzytkownik)
{
return $uzytkownik->usun();
}
}
$baza = new BazaUzytkownikow;
$szukamy = new DaneUzytkownika;
$szukamy->user_name= 'rr';
$uzytkownik = $baza->pobierz($szukamy);
// zmieniam dane pobranego wcześniej użytkownika
$uzytkownik->user_from = 'nowy gościu';
//próbuje zapisać zmiany
$baza->zapisz($uzytkownik);
Otrzymuję komunikat :
Catchable fatal error: Argument 1 passed to BazaUzytkownikow::dodaj() must be an instance of DaneUzytkownika
Co robię źle ?