Soluzioni consigliate per la creazione di una richiamata che le catene Metodi multipli e / o proprietà?

StackOverflow https://stackoverflow.com/questions/3893080

Domanda

Stiamo lavorando su un'interfaccia di tipo Builder che in fondo costruisce un elenco per fare la gestione CRUD di singoli oggetti (dal momento che stiamo usando un oggetto ActiveRecord == un record del database).

Al fine di rendere specificando i valori delle colonne e dei parametri per le opzioni di Lista flessibile che inizialmente attuato gli argomenti di callback come una matrice che si presentava così:

'params' => array(
              'static' => $this->institution->id, 
              array(
                'method1' => array(
                                'method_name', 
                                array('arg1', 'arg2')
                             ), 
                             'prop1' => 'id')

Questa soluzione presenta degli inconvenienti evidenti solo in termini di disagio, ecc ma ha funzionato.

Su suggerimento di un collega, abbiamo cercato chiusure di attuazione, ma a causa di un altro requisito con la classe, dobbiamo serializzare tutti i dati nella classe che abbiamo appena scoperto non funziona con le chiusure. La sintassi con le chiusure era ovviamente molto più semplice:

'params' => array(
               $this->institution->id,
               function($obj) { return $obj->method_name($arg1, $arg2)->id; }
             )

Quindi la mia prima domanda è se c'è un modo per conservare la chiusura in un formato serializable (come una stringa) e poi riconvertirlo in una chiusura una volta che la classe è deserializzato?

O qualcuno può fornire un suggerimento su una migliore interfaccia per risolvere questo tipo di problema richiamata?

È stato utile?

Soluzione

V'è un eccellente e post dettagliato su come utilizzare Reflection per estendere Chiusure a fare quello che vuoi: allungabile PHP 5.3 Chiusure con serializzazione e Reflection . Detto questo, mi chiedo se questo è meno imbarazzante di quanto il tuo soluzione originale, dal momento che dovrete passare oggetti invece -. In modo efficace solo codifica in modo leggermente diverso e si potrebbe anche finire con un calo di prestazioni

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top