L'utilizzo di globals rende difficile la verifica del codice, quindi più soggetto a bug, non sicuro e imprevedibile. Ecco perché passiamo le variabili che vogliamo all'interno di una funzione / oggetto. Quindi la mia domanda è semplice:
Do $ _POST, $ _GET, ecc violano il principio di incapsulamento ?
Sto pensando che, per mantenere il controllo di quelle variabili in modo OO, una soluzione ideale sarebbe aggiungere alcune righe come questa al codice:
// Convert the $_GET array to an object
$get = json_decode(json_encode($_GET), FALSE); // stackoverflow.com/a/1869147
// Stop it from being included from anywhere
unset($_GET);
// Small example of what could be done later on
$DB = new PDO(/* ... */);
$Person = new Person($DB, $get->id);
Non l'ho visto da nessuna parte, nemmeno un tutorial o una raccomandazione. Inoltre, possiamo vedere chiaramente come il codice sopra sia molto più facile da test rispetto a quello che include $Person = new Person($DB, $_GET['id']);
o even (il brutto) $Person = new Person($DB);
dato che puoi usare un oggetto fittizio $get
.
Il codice è nella giusta direzione o mi manca qualcosa?
EDIT: dopo alcune indagini ( quadro Zend e Cake PHP ) come suggerito da Alexander Kuzmin, sembra essere la cosa giusta andare. Probabilmente sono troppo grandi per me da scavare nel codice ATM, ma lo terrò a mente.