Il SplQueue di PHP non include una funzione clear () o reset () per cancellare i dati fuori dalla struttura dei dati. La mia applicazione richiede quella funzionalità. Questo lascia due opzioni:
A) Crea una sottoclasse di SplQueue. Esempio:
class UserQueue extends SplQueue
{
public function clear() {
//dequeue everything
}
}
Il problema con questo approccio è che non riesco a vedere un modo per testare consumatori di questa sottoclasse senza fare affidamento su clear () come definito nella sottoclasse. In sostanza, non riesco a pensare a un modo per smantellare quella funzionalità in PHP, a meno che non dipenda solo dai test di UserQueue.
B) Implementa la funzione clear () in ogni utente di SplQueue che lo richiede (la maggior parte dei consumatori nella mia applicazione), che sembra ovviamente terribile ma sembrerebbe essere l'unico metodo testabile.
Spero che qualcuno là fuori possa dirmi che c'è un modo ovvio per testare l'opzione A che ho perso. Ho anche preso in considerazione il wrapping di SplQueue, ma non vedo come questo migliori le cose. Oppure potrei scomunicare con runkit , ma un'avversione quasi allergica a runkit mi è stata battuta .