Livewire 5 Cannot use "::class" on int
Ich versuche meinen Blog auf dem neuesten Stand zu halten und letztes Wochenende habe ich es endlich geschafft, Livewire von Version 3 auf 4 zu aktualisieren.
Als ich aber die Tests laufen ließ, erhielt ich diese Fehlermeldung:
TypeError
Cannot use "::class" on intDer Stacktrace war zuerst wenig hilfreich. Er verwies auf eine Middleware und als ich diese auskommentierte, verwies er stattdessen auf die nächste Middleware.
Also habe ich etwas tiefer gegraben. Dabei fand ich dann heraus, dass der Fehler bei dem Versuch auftrat, Inhalte aus den kompilierten Blade-Ansichten zu laden.
Der Übeltäter war damit leicht zu finden. Die neueste Funktion, die ich dem Blog hinzugefügt habe, ist das „Inhaltsverzeichnis”, welches automatisch aus den Überschriften meiner Beiträge generiert wird.
Während die Überschriften in einem zentralen Dienst extrahiert werden, wird die eigentliche Ausgabe mit mehreren verschiedenen View-Komponenten erstellt.
Und für diese Komponenten habe ich Volt verwendet.
Bis zur Version 3 erforderte die übliche Livewire-Komponente zusätzlich zu einem Blade-Template eine PHP-Klasse.
Volt ist eine Erweiterung von Livewire, die Komponenten aus einer einzigen Datei (Single-File-Components) ermöglicht.
Seit Livewire 4 werden Komponenten aus einer einzigen Datei jedoch nicht nur unterstützt, sondern sie sind sogar der Standard, wodurch Volt überflüssig wird.
Deshalb habe ich es bereits während des Upgrade-Prozesses deinstalliert.
Dadurch wurden jedoch nicht automatisch alle Volt-Komponenten entfernt.
Nachdem die Ursache gefunden war, war die Lösung trivial:
Da meine Volt-Komponenten bereits sehr minimalistisch waren, war die Änderung trivial.
Während die Syntax in Volt eher funktional gehalten ist, basiert der neue Livewire-Ansatz auf einer einfachen anonymen Klasse.
Dies ist auch der Grund für diese seltsame Fehlermeldung. Livewire versuchte, die Klasse innerhalb dieser Blade-Vorlage zu laden, konnte sie jedoch nicht finden.
Abgesehen von dieser kleinen Panne verlief der Upgrade-Prozess sehr reibungslos.
Livewire 4 bringt mehrere Verbesserungen und neue Funktionen mit sich und ich freue mich bereits darauf, diese gleich mal auszuprobieren.
Kommentare