Ho usato classi "statiche" come metodo per raggruppare le funzioni con finalità correlate sotto un nome comune che fornisce la leggibilità e la manutenibilità al codice a scapito delle prestazioni e un utilizzo errato del modello di oggetti causato dall'ignoranza.
Posso assolutamente farlo con una classe normale, ma quando l'oggetto non ha uno stato non ha senso istanziarlo ogni volta che ho bisogno di accedere a una funzione, è anche sbagliato.
Con php 5.6 o qualcosa introdussero funzioni di namespace, ma anche se così non fosse, potevo ancora fingere uno spazio dei nomi con prefissi di nomi, quindi (preparare, ignoranza in arrivo) suppongo che il cambiamento aggiunga solo al sistema di gestione delle funzioni interno di php o qualunque cosa sia.
Stavo pensando - quale sarebbe un modo corretto per dichiarare funzioni di tale natura?
Per un esempio prendo questo helper html che ho creato molto tempo fa . Puoi vedere che ha un sacco di funzioni come
class HTML {
public static function script($src, array $attributes = array(), $defer = true){
$attributes['type'] = 'text/javascript';
$attributes['src'] = strstr($src, '://') ? $src : SITE_URL . $src;
if($defer){
$attributes['defer'] = 'defer';
}
return '<script'.self::parseAttributes($attributes).'></script>';
}
public static function stylesheet($src, array $attributes = array()){
$attributes['type'] = 'text/css';
$attributes['href'] = strstr($src, '://') ? $src : SITE_URL . $src;
$attributes['rel'] = 'stylesheet';
return '<link'.self::parseAttributes($attributes).'/>';
}
}
ma l'oggetto stesso non ha stato, quindi non sarebbe meglio avere solo queste funzioni come qualcosa di
function htmlhelper_script($src, array $attributes = array(), $defer = true){
$attributes['type'] = 'text/javascript';
$attributes['src'] = strstr($src, '://') ? $src : SITE_URL . $src;
if($defer){
$attributes['defer'] = 'defer';
}
return '<script'.self::parseAttributes($attributes).'></script>';
}
function htmlhelper_stylesheet($src, array $attributes = array()){
$attributes['type'] = 'text/css';
$attributes['href'] = strstr($src, '://') ? $src : SITE_URL . $src;
$attributes['rel'] = 'stylesheet';
return '<link'.self::parseAttributes($attributes).'/>';
}
Quali sono le differenze tra i due approcci, quale sarà considerato migliore e perché?