Dove posso utilizzare e dovrei usare classi anonime presentate in PHP 7? Non riesco a trovare un caso d'uso per loro.Classi anonime in PHP 7
$message = (new class() implements Message {
public function getText() { return "Message"; }});
Dove posso utilizzare e dovrei usare classi anonime presentate in PHP 7? Non riesco a trovare un caso d'uso per loro.Classi anonime in PHP 7
$message = (new class() implements Message {
public function getText() { return "Message"; }});
È possibile trovare le informazioni che state cercando here, in cui viene presentato il RFC.
I punti chiave della sezione Use cases
sono i seguenti:
anonimi non sono diverse da quelle lezioni regolari in PHP tranne che devono essere creati e un'istanza al allo stesso tempo. Significa che possono essere estesi da altre classi, possono utilizzare interfacce, ecc.
Se pensi di aver bisogno di una classe molto semplice e di non usarla mai più in nessun altro, è giusto per te. Un altro motivo potrebbe essere che hai bisogno di una classe semplice (con più metodi semplici) e non vuoi perdere tempo per la documentazione, quindi crearne una in movimento per raggiungere il tuo compito.
Un buon caso che posso fornire è fornire listener specifico per il contesto per usarlo solo una volta o un adattatore per listener esterno, senza definire una classe personalizzata. Ecco un esempio:
$this-apiCaller->call('api_name', $parameters, new class($businessListener) implements ApiListenerInterface
{
private $listener;
public function __construct($originalListener)
{
$this->listener = $originalListener;
}
public function onSuccess($result)
{
$this->listener->addLog(new SuccessRecord($result));
}
public function onFailure($error)
{
$this->listener->addLog(new ErrorRecord($error));
}
});
classi anonime (chiamato [classi interne in Java] (https://www.google.com/webhp?ion=1&espv=2&es_th=1&ie=UTF-8#q=java% 20nerner% 20classes ed es_th = 1)) sono in circolazione da un po 'di tempo e [puoi leggerli in molti posti] (https://www.google.com/webhp?sourceid=ion=1&espv=2&es_th=1&ie=UTF- 8 # q = utilizzo + caso + per + anonimi + classi). Ti raccomando [torna qui quando hai una domanda più specifica] (http://stackoverflow.com/help/how-to-ask). – morphatic
@morphatic Una classe interna è diversa da una classe anonima. – jvrodrigues