lunedì 16 marzo 2009

PHP e variabili di istanza: un errore da principianti!

Qualche giorno ho perso diverso tempo cercando di capire quale problema avesse una applicazione PHP, per poi scoprire che ho mescolato mentalmente le regole di Java e PHP.
In sostanza avevo una classe che definiva delle variabili di istanza che venivano poi usate in un metodo come segue:

class MyClass{
private $ORDER_BY_NAME = " ORDER BY name ";

public function doQuery(){
...
$sql .= $ORDER_BY_NAME;
...
}
}

Come si può notare io usavo la variabile di istanza seguendo le regole Java, ovvero ricerca della variabile nell'oggetto qualora non sia già definito nella funzione (o nel blocco di codice). Ebbene, questo in PHP non funziona, è bensì necessario dereferenziare automaticamente la variabile passando attraverso l'oggetto:


class MyClass{
private $ORDER_BY_NAME = " ORDER BY name ";

public function doQuery(){
...
$sql .= $this->ORDER_BY_NAME;
...
}
}

Un vero errore da principianti!
E dire che solitamente uso sempre i qualificatori this, super, ecc. proprio per identificare meglio la visibilità delle variabili e non incorrere in simili errori.
Insomma, una distrazione che mi è costata diverso tempo.

Nessun commento: