Uno dei punti di forza di qualsiasi applicazione è la scalabilità. La capacità di un programma di crescere e decrescere nel modo più semplice possibile. Tanto più riusciamo a rendere scalabile il codice di un’applicazione, tanto maggiore sarà la possibilità di allungare la vita stessa del sistema.
Un’applicazzione scalabile ha lunga vita perchè ha maggiore capacità di integrare nuove funzioni e soprattutto nuove tecnologie. Per rendere scalabile un’applicazione la si deve pensare come sistema: una serie di funzionalità più o meno interdipendenti che danno vita al risultato finale.
In un contesto del genere la programmazione ad oggetti risulta essere l’arma migliore per garantirci uno sviluppo coerente dei nostri lavori. Purtroppo il PHP risulta un linguaggio poco avvezzo alla logica OOP, dato che questa è feature implementata con vero impeto solo dalla versione 5. Cionondimeno è possibile pensare ad una struttura logica scalabile, come d’altra parte è stata implementata in molte applicazioni scritte nel linguaggio predetto.
La figura sottostante vuole dare un’idea di insieme del ragionamento da fare, soprattutto con riferimento ad applicazioni scritte con linguaggio interpretato from top to bottom.

Cosa deve fare un’applicazione web scalabile? Prima di tutto caricare il suo core code. Il codice che sta alla base del funzionamento. Le librerie condivise. E ovviamente le costanti di sistema.
Subito dopo, se la nostra applicazione pesca dati da un database, ci connetteremo a questo, perchè spesso risulta utile connettersi immediatamente e mantenere la connessione aperta per i vari utilizzi durante la sessione, ma questo dipende appunto dal tipo di applicazione, database e driver di connessione utilizzato.
Fatto il minimo necessario non ci resta che capire cosa l’utente ci sta chiedendo e comportarci di conseguenza. E sta proprio in questa operazione che si vede la scalabilità dell’applicativo.
In che modo facciamo il switching dei vari casi possibili? Come abbiamo organizzato il codice per facilitarci al massimo la possibilità di aggiungere o togliere funzioni?
Qui la programmazione ad oggetti ci aiuta. Un esempio molto semplice di una classe php che si occupa del switching delle varie operazioni è la seguente.
class switchoperation{
public var $act;
function __construct(){
$this->act = mysql_real_escape_string($_GET[‘act’]);
if(file_exists(‘/home/user/public_html/application/act/’ . $this->act . ‘.php’)){
require_once ‘/home/user/public_html/application/act/’ . $this->act . ‘.php’;
$mainop = new $this->act($this->classes);
}
}
}
Nella directory /act/ della nostra applicazione avremo un file per ogni funzionalità. Usando il trucco di nominare il file con lo stesso nome della variabile $this->act, ed avendo cura di nominare la classe all’interno del file allo stesso modo, è possibile impostare una sola variabile pubblica per decidere come deve comportarsi l’applicazione.
In sintesi, per aggiungere o togliere funzionalità, basterà aggiungere o togliere un file nella directory predetta. E non dimentichiamo che se la classe di riferimento prevede operazioni molto complesse, lo stesso modello è riproponibile ad un livello più basso.
Il consiglio che posso dare è quello di non andare mai oltre il secondo livello o finirete con il complicarvi la vita e basta.
Il codice riportato sopra è solo un esempio ed non è utilizzabile tout court. Il suo solo scopo è dare un’idea di insieme su come progettare un’applicazione e non trovarsi mai con l’annoso problema di dover rivedere miriadi di linee di codice quando decidete di modificare una parte infima dell’applicazione.
Però, è la dritta che cercavo.
Prima facevo questa cosa in maniera procedurale, con il controllino sulla richiesta, ma volendo convertire il mio progetto personale in OOP, stavo scapocciando di brutto per via della carenza di var pubblica.
Mille grazie! Mi hai chiarito un bel po' le idee sul come procedere con la coversione! 😀
Prego 🙂