Ho un'applicazione PHP (un servizio web). Consiste di file raggruppati in directory per tema come:
/customer /search.php
con questo esempio di contenuto:
Auth::authenticate($options);
$db = new Db($options);
$db->query("select ... ");
echo json_encode($db->fetch_all();
Un modo semplice per convertire questo codice in codice orientato agli oggetti sarebbe quello di mappare un URL /object/method.php al metodo $ Object- > ($ post_parameters) usando un router di base. Il codice di esempio precedente diventerebbe (nel file /Customer.php):
class Customer
{
function search($post_parameters)
{
Auth::authenticate($options);
$db = new Db($options);
$db->query("select ... ");
echo json_encode($db->fetch_all();
}
}
I vantaggi
- È facile convertire il codice, non ci vorrà molto tempo.
- Posso usare l'autoloading delle classi.
Svantaggi:
- È solo formalmente orientato agli oggetti. Rimane ancora principalmente il codice procedurale.
- Io chiamo ancora Auth :: authenticate () e creo un nuovo Db in ogni metodo (ma non sempre con gli stessi parametri).
Sono sulla buona strada? C'è un modo migliore per avvicinarsi a quel refactoring del codice? O c'è un ovvio passo successivo?
Pensi sia quello che ho descritto come caso di uso legittimo per codice procedurale? C'è una via di mezzo tra questo e un approccio orientato agli oggetti con una struttura completa come la struttura di Zend per esempio?