Napisalem klase sluzaca do zapisywania danych do bazy , oto jej czesc :
class Row { public $token; public $tableName; function __construct($db) { $this->db = $db; } public function setToken($token) { return $this->token = $token; } function insert() { if($this->tableName = 'tokens') { if(!mysql_query("INSERT INTO $this->tableName (id, token, spamcount, hamcount) VALUES (NULL, '$this->token', 0, 1)")){ throw new Exception('Error inserting row'); } } else { throw new Exception('Error inserting row'); } } }
Nastepnie mam klase dziedziczaca po tej klasie ktora wyglada tak :
class TotalsRow extends Row { public $tableName = 'totals'; }
Jak widac ustawiam w klasie pochodnej zmienna ktora ma przechowywac string 'totals'
pozniej wywoluje obiekty :
$totalrow = new TotalsRow(new MysqlDatabase('localhost','root', 'wmateusz', 'spam')); $totalrow->insert();
No i teraz co jest najdziwniejsze, jak wynika z funkcji insert() w klasie Row wyraznie widac z warunku if else ze jezeli $tableName jest inne niz 'tokens' to powinno zapisywac w drugiej tabeli, tzn powinno wykonywac druga czesc petli if else....
Niestety gdy odpalam skrypt wartosc zapisauja sie nie w tej tabeli co trzeba, zamiast w tabeli 'totals' wszystko zostaje przekazane do tabeli 'tokens'......czyli do pierwszego warunku if else mimo ze w klasa dziedziczaca ma przypisane do zmiennej $tableName = 'totals'....