Qual è il nome di questo motivo di progettazione?

-1

Magento ha una classe chiamata Varien_Object con uno schema che sto cercando di identificare. Il pattern crea dati nascosti e consente di accedervi, ma la differenza principale tra questa e una facciata normale è che i metodi vengono creati dinamicamente per consentire l'accesso a questi dati.

Ecco un esempio (molto approssimativo) di pattern.

$vo = new Varien_Object();

// The Varian_Object allows data to be set using the "setData" method.
$vo->setData('something', 'one');
$vo->getData('something'); // -> "one"

// Null is returned if the data isn't recognised.
$vo->getData('does_not_exist'); // -> null

// But here's the pattern I'm curious about. By default, the Varien_Object does
// not have a "setSomethingElse" method.
$vo->setSomethingElse('two');
// Behind the scenes, the method name is checked and converted. The line above 
// is equivalent to this:
$vo->setData('something_else', 'two');

Il metodo magic set ha metodi equivalenti per get , has e uns ("cancella").

La mia domanda è: questo pattern ha un nome e, in caso affermativo, che cos'è?

    
posta James Long 09.12.2015 - 11:47
fonte

1 risposta

1

Qui ci sono due parti: gestisci una chiamata al metodo non definita.

La prima parte è un mezzo mediante il quale la lingua consente a un oggetto di gestire una chiamata a un metodo che non è stato definito. Su Rosetta si chiama ' Rispondi a una chiamata di metodo sconosciuta '. Le capacità linguistiche sono l'opposto dei modelli di progettazione - i modelli esistono per aggirare la mancanza di funzionalità nei linguaggi.

La seconda parte consiste nell'utilizzare la capacità di chiamata del metodo sconosciuto per trasformare una chiamata del modulo setFoo(x) in una voce di dizionario "Foo" -> x . Non sono consapevole del fatto che si tratti di uno schema chiamato; casi d'uso simili nelle altre lingue che conosco sono statici e utilizzerebbero un dizionario qui, oppure sono completamente dinamici e consentono di aggiungere proprietà ad-hoc.

    
risposta data 09.12.2015 - 12:21
fonte

Leggi altre domande sui tag