Buon pomeriggio.
Premetto che questo post NON VUOLE ESSERE NE UNA PROVOCAZIONE NE UNA POLEMICA ma solo una riflessione.
Come ho già detto non sono un professionista ma un semplice appassionato fin dai tempi dei primi computer e del buon vecchio basic (+ o - la prima metà degli anni 80 quindi) e in tutti questi anni mi è capitato spesso di "smacchinare" con vari linguaggi di programmazione ed anche se sicuramente non ne conosco neanche uno al 100% ho una certa infarinatura con svariati idiomi.
Il succo del post è il seguente: Quanto è utile e quanto conviene programmare agli oggetti con PHP ?
Prima di parlare ovviamente mi sono comprato un paio di corposissimi libri (uno dedicato allo sviluppo di applicazioni web + apache + mysql con php e l'altro alla stessa cosa ma solo ed esclusivamente dedicato alla programmazione OOP) studiandoli anche con una certa avidità e se è vero che il primo mi ha aperto nuovi "orizzonti" insegnandomi tante cose delle quali in tutta onestà non conoscevo neanche l'esistenza è altrettanto vero che il secondo questi orizzonti li ha velati con un mucchio di domande.
Giusto per citarne alcune:
1) Per quale motivo con una semplice funzione procedurale (metodo) mi connetto ad un database con 3 sole righe di codice, mentre per fare la stessa cosa usando la OOP le righe di codice aumentano in modo sensibile ?
Ovviamente questi sono solo due esempi ma a me, poi posso sbagliare, pare sia tutta così la programmazione OOP; ovvero quello che in modo procedurale viene fatto con un riga ne richiede 2 o più senza che in realtà ci siano effettivi vantaggi in termini di riusabilità (posso includere dove voglio tanto il file che contiene la funzione di connessione al db quanto quello che contiene la classe DBLayer) e neanche particolari problemi legati alla sicurezza; posto che questi vengono in ogni caso risolti dal codice sia esso scritto in modo procedurale che in modo OOP.Codice PHP:function DBLayer ( $dbHost, $dbUser, $dbPass, $dbName ) // aggiungere anche la porta se necessario
{
$linkID = mysql_connect ( $dbHost, $dbUser, $dbName ) or die ( /* Personalizzare errore */ );
mysql_select_db ( $dbName, $linkID ) or die ( /* Personalizzare errore */ );
}
DBLayer ( $dbHost, $dbUser, $dbPass, $dbName );
-------------------------
class DBLyer
{
private $_dbHost;
private $_dbUser;
private $_dbPass;
private $_dbName;
private $_linkID;
public function __construct ( $dbHost, $dbUser, $dbPass, $dbName )
{
$this->_dbHost = $dbHost;
$this->_dbUser = $dbUser;
$this->_dbPass = $dbPass;
$this->_dbName = $dbName;
$this->_linkID = mysql_connect ( $this->_dbHost, $this->_dbUser, $this->_dbPass )
mysql_select_db ( $this->_dbName, $this->_linkID );
/**
* Ho semplificato queste due istruzioni omettendo ad esempio un ciclo if che controlla
* se la connessione prima e la selezione del db poi è andata a buon fine ed eventualmente
* solleva un eccezione in caso di errore
*/
}
}
$db = new DBLayer($dbHost, $dbUser, $dbPass, $dbName);
Qualcuno sa spiegarmi quali sono gli effettivi vantaggi di questa metodologia di programmazione ?
Grazie

Rispondi quotando
