Scrivere funzioni di test, nonostante possa sembrare codice inutile, è una delle basi per progetti ben fatti! In particolare, scrivere classi (e non semplici funzioni) di test, aiuta nella manutenzione e nell’aggiornamento di porzioni di codice, soprattutto se unitamente si seguono pattern validi (come MVC, ad esempio).

PHP (come tutti i linguaggi moderni) supporta nativamente e con sforzo minimo la riflessione, il che si traduce nella possibilità di lavorare con classi e metodi sconosciuti! Il suo supporto è più semplice rispetto ad altri linguaggi (come il C# ad esempio, che richiede delle conoscenze superiori) soprattuto in ragion del fatto che è dinamicamente tipato!

Supponendo di avere questa classe d’esempio:

class Esempio {
private $_testo;
public function getTesto()
{
return $this->_testo;
}
public function setTesto($value)
{
$this->_testo = $value;
}
}

E supponendo di non conoscere il nome né della classe né del metodo con cui dobbiamo lavorare e di scoprirli quindi in runtime:

$nomeClasse = “Esempio”;
$nomeProprieta = “Testo”;

PHP permette di chiamare i metodi desiderati semplicemente utilizzando le variabili appena create come se fossero i nomi delle classi:

$classeSconosciuta = new $nomeClasse();
$setterSconosciuto = “set” . $nomeProprieta;
$getterSconosciuto = “get” . $nomeProprieta;
$classeSconosciuta->$setterSconosciuto(“prova”);
print $classeSconosciuta->$getterSconosciuto();

Questo utilizzo è molto banale e senza senso, ma pensate al debugging avanzato che vi viene offerto oppure alle creazione a runtime di oggetti di qualsiasi tipo! Si potrebbe pensare di creare un parser simile a XAML, ovvero un documento XML che contiene la descrizione di tutti gli oggetti grafici da istanziare! Comodo e pulito no?