Quindi sto sviluppando un'applicazione che utilizza un contenitore IoC. Ora ho bisogno di alcuni metodi di supporto per la manipolazione degli array come set, get, ecc. Vedo due possibili modi per andare:
- Uso di una classe con metodi statici.
- Uso di una classe con metodi non statici registrati nel contenitore IoC.
Quando usi il metodo 1, sarà simile a questo:
$arr = array(); // Defining $arr
Arr::set($arr, 'a', 'b'); // Sets 'a' => 'b' in $arr
echo Arr::get($arr, 'a'); // Outputs 'b'
E usando il metodo 2, per prima cosa registrerò una nuova classe Arr nel contenitore IoC, e il suo utilizzo sarebbe simile a questa:
$arr = array(); // Defining $arr
$app['arr']->set($arr, 'a', 'b'); // Sets 'a' => 'b' in $arr
echo $app['arr']->get($arr, 'a'); // Outputs 'b'
Secondo i miei benchmark, il metodo 1 è quasi due volte più veloce del metodo 2. Quindi in termini di metodo di esecuzione 1 è la strada da percorrere (credo). Ma i metodi statici sono generalmente considerati cattive pratiche. Quindi, in termini di best practice, dovrei usare il metodo 2 per evitare metodi statici.
La mia domanda è se dovrei usare il contenitore IoC per i metodi di supporto o semplicemente usare i metodi statici.