Salve a tutti =)
Vado subito al sodo: usando l'ultima versione di PHP 5.2.x (per essere allineato con la versione usata su altervista, che usa PHP 5.2.17), ho realizzato la seguente struttura di classi:
Codice PHP:
abstract class DAO {
const TABLE = "";
[...]
function select($where = "", $order = "", $limit = "") {
$sql = "SELECT * FROM " . self::TABLE;
[...]
}
[...]
}
class UsersDAO extends DAO {
const TABLE = "users";
[...]
}
il problema è che se io eseguo il sequente codice:
Codice PHP:
$dao = new UsersDAO;
$utenti = $dao->select();
Mi genera un errore un quanto la query base nella variabile $sql viene creata usando la costante TABLE del padre e non della classe figlia!
Ora, personalmente sono nuovo alla programmazione in PHP ad oggetti (ho sempre usato procedurale, anche se conosco abbastanza bene il paradigma OO da Java), però a costo di sbagliare dico: non dovrebbe prendermi correttamente il valore della costante per la classe che sto effettivamente utilizzando?
Come si può eventualmente aggirare il problema sempre restando nel range delle feature di PHP 5.2.x?
Grazie in anticipo per i vostri suggerimenti =)
EDIT: ho notato che lo stesso problema si presenta anche con le variabili dichiarate "static", mentre per le variabili di classe "normali" tutto funziona correttamente...