Ankündigung

Einklappen
Keine Ankündigung bisher.

Laravel events

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Laravel events

    Hallo

    Ich studiere gerade die Events von Laravel. Doch mir ist einfach nicht ganz klar wieso ein Event mit einer Klasse definiert wird. So wie im Mailer:

    PHP-Code:
    protected function sendSwiftMessage($message)
    {
        if (
    $this->events) {
            
    $this->events->fire(new Events\MessageSending($message));
        }
        return 
    $this->swift->send($message$this->failedRecipients);

    Genügt es denn nicht ohne eine Klasse:

    PHP-Code:
    protected function sendSwiftMessage($message)
    {
        if (
    $this->events) {
            
    $this->events->fire('MessageSending'$message);
        }
        return 
    $this->swift->send($message$this->failedRecipients);


    Und wenn ein Event mit einer Klasse definiert wurde, wird ja der Klassenname für den Listener genommen, was doch daurch zu langen Namen führt.

    Sowie

    PHP-Code:
    $events->listen('Illuminate\Mail\Events\MessageSending', function ($foo$bar) {
        
    //
    }); 

    Oder verstehe ich denn Sinn/Nutzen nicht? Besten Dank für Eure Hilfe im voraus.

  • #2
    Wie lang ein Event-Name ist, ist zweitrangig. Klassen haben den Vorteil das sie ( wenn sie als Event-Name verwendet werden ) durchaus gekürzt werden können.

    PHP-Code:
    $foo 'Illuminate\Mail\Events\MessageSending'
    oder Kürzer:

    PHP-Code:
    use Illuminate\Mail\Events\MessageSending;

    $foo MessageSending::class; 
    Die Verwendung von Klassennamen bspw. reduziert auch die Wahrscheinlichkeit auf Tippfehler beim feuern von Events, da dieser - immer gleich - von dem übergebenen Objekt extrahiert wird. Wenn du viele Events behandelst, mag es dir Sinnvoller erscheinen diese besser via Command Bus zu implementieren. ( pre-5.1 im Illuminate-Namespace, post-5.0 im Collective-Namespace )
    [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

    Kommentar


    • #3
      Hey danke Dir trOy für die Erläuterung. Macht durchaus Sinn. Nun sehe ich den Nutzen. Danke Dir.

      Kommentar

      Lädt...
      X