Pre: Sto guardando un progetto PHP piuttosto grande sviluppato da un'azienda che dobbiamo interagire in parte con la creazione di una nuova webapp.
L'intera applicazione è sviluppata in PHP 5.
La maggior parte delle classi in questo progetto, e in particolare tutte le classi che interagiscono con il database, sono dichiarate abstract
e contengono solo static
funzioni.
Prendi ad esempio questo file:
abstract class DataHelper_Command
{
/**
* @param unknown $id_device
* @param unknown $latest_command_id
* @return Command[]
*/
public static function getCommandsToSend($id_device, $latest_command_id)
{
$rows = DBUtility::executePreparedQuery('SPS_COMMANDS_TO_SEND', array(":id_device" => $id_device, ":latest_command_id" => $latest_command_id));
return DataHelper_Command::commandsFromDataTable($rows);
}
public static function getFW()
{
$rows = DBUtility::executePreparedQuery('SPS_FW_VERSION');
return $rows;
}
/**
* @param unknown $rows
* @return Command[]
*/
private static function commandsFromDataTable(&$rows)
{
$res = array();
foreach ($rows as &$row)
{
$res[] = DataHelper_Command::commandFromDataRow($row);
}
return $res;
}
/**
* @param array $row
* @return Command
*/
private static function commandFromDataRow(&$row)
{
return new Command($row["id_command"], $row["type"], $row["text"]);
}
}
Non vedo nemmeno traccia di usare un pattern Singleton nel progetto!
Questo mi suona un po 'strano, poiché ho sempre sentito dire che usare le classi statiche è un incubo in termini di prestazioni.
Questo server doveva essere in grado di funzionare su entrambi i server Web standard e su un dispositivo embedded con prestazioni davvero limitate (un ARM in esecuzione a 400 MHz, con 128 MB di RAM).
Mi sto perdendo qualcosa qui? Ci sono casi d'uso in cui ciò è considerato una buona pratica?