[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"btz8hO-MXSFLpybqvfjYVBre4OvrEJO1wFySe3Zmv-s":3,"9_t0YFtO844PW3-iCfPxRTbw8yv0-2zzu2bChZFenjo":39,"BFIcAZTZoN07mc933NR4no5m2O0BVgXFu3MfVZ6XApA":75,"U5GX4Iv_eR-g03IrgipzoGiGeU5wtsx0GMKqV4-BRNg":178,"_apollo:default":220},{"menu":4},{"__typename":5,"id":6,"name":7,"items":8},"Menu","footer","Fußzeile",[9,24,29,34],{"__typename":10,"id":11,"title":12,"description":13,"url":14,"langcode":15,"internal":20,"expanded":21,"attributes":22},"MenuItem","e2873307-b50a-4aab-b6b2-1950fd99c72e","Impressum",null,"/impressum",{"__typename":16,"id":17,"name":18,"direction":19},"Language","de","German","ltr",true,false,{"__typename":23,"class":13},"MenuItemAttributes",{"__typename":10,"id":25,"title":26,"description":13,"url":27,"langcode":15,"internal":20,"expanded":21,"attributes":28},"2cd9b7c9-142a-4ea3-b898-a0952c54a195","Datenschutz","/datenschutz",{"__typename":23,"class":13},{"__typename":10,"id":30,"title":31,"description":13,"url":32,"langcode":15,"internal":20,"expanded":21,"attributes":33},"a5effba3-5a8c-4125-8d78-0cdba09824db","AGB","/agb",{"__typename":23,"class":13},{"__typename":10,"id":35,"title":36,"description":13,"url":37,"langcode":15,"internal":21,"expanded":21,"attributes":38},"114bf071-bdbb-44cf-85c1-69e9d9e0777d","Newsletter","https://liechtenecker.at/newsletter-subscribe",{"__typename":23,"class":13},{"menu":40},{"__typename":5,"id":41,"name":42,"items":43},"nuxt-main-menu","Nuxt Hauptmenü",[44,50,55,60,65,70],{"__typename":10,"id":45,"title":46,"description":13,"url":47,"langcode":48,"internal":20,"expanded":21,"attributes":49},"9ffc5019-cbd8-4b2e-8eb7-9feae486d4a1","Blog","/know-how",{"__typename":16,"id":17,"name":18,"direction":19},{"__typename":23,"class":13},{"__typename":10,"id":51,"title":52,"description":13,"url":53,"langcode":48,"internal":20,"expanded":21,"attributes":54},"1c7a5430-8a42-4b24-9544-252adabc2f4c","Projekte","/projekte",{"__typename":23,"class":13},{"__typename":10,"id":56,"title":57,"description":13,"url":58,"langcode":48,"internal":20,"expanded":21,"attributes":59},"9c4feedc-79e4-4fbf-b68c-065f33ebfe4c","Sparring","/workshop-ux-sparring-fuer-unternehmen",{"__typename":23,"class":13},{"__typename":10,"id":61,"title":62,"description":13,"url":63,"langcode":48,"internal":20,"expanded":21,"attributes":64},"3b77a27b-272a-489f-843e-53e23ed07741","Trainings","/liechtenecker-ux-academy",{"__typename":23,"class":13},{"__typename":10,"id":66,"title":67,"description":13,"url":68,"langcode":48,"internal":20,"expanded":21,"attributes":69},"ce0bb82b-e1ee-4036-be95-f693a62e9f4a","Über uns","/about",{"__typename":23,"class":13},{"__typename":10,"id":71,"title":72,"description":13,"url":73,"langcode":48,"internal":20,"expanded":21,"attributes":74},"04a19381-81a9-4694-8653-182d8855d2b5","Kontakt","/kontakt",{"__typename":23,"class":13},{"route":76},{"__typename":77,"entity":78},"RouteInternal",{"__typename":79,"id":80,"title":81,"changed":82,"created":88,"langcode":91,"path":92,"promote":21,"status":20,"sticky":21,"metatag":93,"postCategory":113,"postContentElements":13,"evergreen":13,"tags":138,"postWpBody":156,"wpHeaderImage":13,"wpHeaderImageOld":159,"wpHeaderImageOldSmall":13,"wpOgImage":13,"wpPromotedTeaserImage":13,"wpShareDescription":13,"wpShareTitle":13,"wpTeaserText":13,"wpYoastHead":171,"author":172},"NodeWpPost","960","Laravel 5 - Alle Neuerungen im Überblick",{"__typename":83,"timestamp":84,"timezone":85,"offset":86,"time":87},"DateTime",1554798214,"UTC","+00:00","2019-04-09T08:23:34+00:00",{"__typename":83,"timestamp":89,"timezone":85,"offset":86,"time":90},1423560438,"2015-02-10T09:27:18+00:00",{"__typename":16,"id":17,"name":18,"direction":19},"/blog/laravel-5-alle-neuerungen-im-ueberblick",[94,101,108],{"__typename":95,"tag":96,"attributes":97},"MetaTagValue","meta",{"__typename":98,"name":99,"content":100},"MetaTagValueAttributes","title","Laravel 5 - Alle Neuerungen im Überblick | Liechtenecker UX Design Studio",{"__typename":102,"tag":103,"attributes":104},"MetaTagLink","link",{"__typename":105,"href":106,"hreflang":13,"rel":107,"media":13,"sizes":13,"type":13},"MetaTagLinkAttributes","http://liechtenecker-cms.liechtenecker-cms.svc.cluster.local/blog/laravel-5-alle-neuerungen-im-ueberblick","canonical",{"__typename":109,"tag":96,"attributes":110},"MetaTagProperty",{"__typename":111,"property":112,"content":81},"MetaTagPropertyAttributes","og:title",{"__typename":114,"id":115,"name":116,"path":117,"status":20,"weight":118,"description":119,"langcode":123,"changed":124,"metatag":127},"TermCategories","7","Technologie","/kategorie/technologie",0,{"__typename":120,"processed":121,"format":122},"Text","Development Themen sowie zukünftige Technologien, mit denen wir uns auseinandersetzen. ","wp_html",{"__typename":16,"id":17,"name":18,"direction":19},{"__typename":83,"timestamp":125,"timezone":85,"offset":86,"time":126},1713772777,"2024-04-22T07:59:37+00:00",[128,131,135],{"__typename":95,"tag":96,"attributes":129},{"__typename":98,"name":99,"content":130},"Technologie | Liechtenecker UX Design Studio",{"__typename":95,"tag":96,"attributes":132},{"__typename":98,"name":133,"content":134},"description","Development Themen sowie zukünftige Technologien, mit denen wir uns auseinandersetzen.",{"__typename":102,"tag":103,"attributes":136},{"__typename":105,"href":137,"hreflang":13,"rel":107,"media":13,"sizes":13,"type":13},"http://liechtenecker-cms.liechtenecker-cms.svc.cluster.local/kategorie/technologie",[139,144,148,152],{"__typename":140,"id":141,"name":142,"path":143,"weight":118},"TermTags","501","framework","/tag/framework",{"__typename":140,"id":145,"name":146,"path":147,"weight":118},"736","L5","/tag/l5",{"__typename":140,"id":149,"name":150,"path":151,"weight":118},"742","laravel","/tag/laravel",{"__typename":140,"id":153,"name":154,"path":155,"weight":118},"965","php","/tag/php",{"__typename":157,"processed":158,"format":122,"summary":13},"TextSummary","\u003Cdiv class=\"grid-wrapper\">\n    \u003Cdiv class=\"row\">\n        \u003Cdiv class=\"default-left col-xsmall-12 col-medium-6 col-medium-offset-2 col-large-6 col-large-offset-3 \">\n            \n\u003Cdiv alt=\"Laravel 5\" data-entity-type=\"media\" data-entity-uuid=\"81866f19-a2c9-4dd1-b898-04e2affe9ff9\" data-langcode=\"de\" class=\"embedded-entity\">\u003Cdiv>\n  \n  \n  \u003Cdiv>\n    \u003Cdiv class=\"visually-hidden\">Bild\u003C/div>\n              \u003Cdiv>    \u003Cpicture>\n                  \u003Csource srcset=\"/sites/default/files/styles/image_width_medium/public/wp-migration/wordpress-media-image/2015/02/laravel5-1.png.webp?itok=bJA9N06B 1x, /sites/default/files/styles/image_width_medium_x2/public/wp-migration/wordpress-media-image/2015/02/laravel5-1.png.webp?itok=KTo6U1tM 2x\" media=\"all and (min-width: 1024px) and (max-width: 1439px)\" type=\"image/webp\" width=\"1000\" height=\"400\">\n              \u003Csource srcset=\"/sites/default/files/styles/image_width_small/public/wp-migration/wordpress-media-image/2015/02/laravel5-1.png.webp?itok=Mv6lpYXI 1x, /sites/default/files/styles/image_width_small_x2/public/wp-migration/wordpress-media-image/2015/02/laravel5-1.png.webp?itok=1PcnsMm4 2x\" media=\"all and (min-width: 745px) and (max-width: 1023px)\" type=\"image/webp\" width=\"1000\" height=\"400\">\n              \u003Csource srcset=\"/sites/default/files/styles/image_width_xsmall/public/wp-migration/wordpress-media-image/2015/02/laravel5-1.png.webp?itok=JxRKNlCm 1x, /sites/default/files/styles/image_width_xsmall_x2/public/wp-migration/wordpress-media-image/2015/02/laravel5-1.png.webp?itok=6RStDD8w 2x\" media=\"all and (min-width: 480px) and (max-width: 744px)\" type=\"image/webp\" width=\"745\" height=\"298\">\n              \u003Csource srcset=\"/sites/default/files/styles/image_width_xxsmall/public/wp-migration/wordpress-media-image/2015/02/laravel5-1.png.webp?itok=BeHdiuDf 1x, /sites/default/files/styles/image_width_xxsmall_x2/public/wp-migration/wordpress-media-image/2015/02/laravel5-1.png.webp?itok=CJhdUMik 2x\" media=\"all and (max-width: 479px)\" type=\"image/webp\" width=\"480\" height=\"192\">\n              \u003Csource srcset=\"/sites/default/files/styles/image_width_large/public/wp-migration/wordpress-media-image/2015/02/laravel5-1.png.webp?itok=1fWcrASx 1x, /sites/default/files/styles/image_width_large_x2/public/wp-migration/wordpress-media-image/2015/02/laravel5-1.png.webp?itok=5Tp3mXVv 2x\" type=\"image/webp\" width=\"1000\" height=\"400\">\n                  \u003Cimg loading=\"lazy\" width=\"1000\" height=\"400\" src=\"/sites/default/files/styles/image_width_large_x2/public/wp-migration/wordpress-media-image/2015/02/laravel5-1.png.jpg?itok=5Tp3mXVv\" alt=\"Laravel 5\" title=\"Laravel 5\">\n\n  \u003C/picture>\n\n\u003C/div>\n          \u003C/div>\n\n\u003C/div>\n\u003C/div>\n\u003Cp>Das neue Jahr hat gerade erst begonnen und schon geht es auch in der Welt des Webs voran. Besonders freue ich mich über den Release vom PHP Framework Laravel 5. Lange hat es gedauert und es wurde viel spekuliert. Jetzt ist es aber da und alles was ihr darüber wissen müsst ist hier in diesem Artikel zusammengefasst.\u003Cbr>\n\u003C/p>\n\u003Ch2>Dateistruktur\u003C/h2>\n\u003Cdiv alt=\"Laravel 5 Dateistruktur\" data-entity-type=\"media\" data-entity-uuid=\"178d1dea-5f07-42df-a1a4-cfbce15347b7\" data-langcode=\"de\" class=\"embedded-entity\">\u003Cdiv>\n  \n  \n  \u003Cdiv>\n    \u003Cdiv class=\"visually-hidden\">Bild\u003C/div>\n              \u003Cdiv>    \u003Cpicture>\n                  \u003Csource srcset=\"/sites/default/files/styles/image_width_medium/public/wp-migration/wordpress-media-image/2015/02/Screen-Shot-2015-02-02-at-15.59.25-1.png.webp?itok=pxEScKVM 1x, /sites/default/files/styles/image_width_medium_x2/public/wp-migration/wordpress-media-image/2015/02/Screen-Shot-2015-02-02-at-15.59.25-1.png.webp?itok=Be0NtviA 2x\" media=\"all and (min-width: 1024px) and (max-width: 1439px)\" type=\"image/webp\" width=\"1392\" height=\"608\">\n              \u003Csource srcset=\"/sites/default/files/styles/image_width_small/public/wp-migration/wordpress-media-image/2015/02/Screen-Shot-2015-02-02-at-15.59.25-1.png.webp?itok=CtDxL6A7 1x, /sites/default/files/styles/image_width_small_x2/public/wp-migration/wordpress-media-image/2015/02/Screen-Shot-2015-02-02-at-15.59.25-1.png.webp?itok=K7szhLBt 2x\" media=\"all and (min-width: 745px) and (max-width: 1023px)\" type=\"image/webp\" width=\"1024\" height=\"447\">\n              \u003Csource srcset=\"/sites/default/files/styles/image_width_xsmall/public/wp-migration/wordpress-media-image/2015/02/Screen-Shot-2015-02-02-at-15.59.25-1.png.webp?itok=nV6G-I-I 1x, /sites/default/files/styles/image_width_xsmall_x2/public/wp-migration/wordpress-media-image/2015/02/Screen-Shot-2015-02-02-at-15.59.25-1.png.webp?itok=fyDLg8HW 2x\" media=\"all and (min-width: 480px) and (max-width: 744px)\" type=\"image/webp\" width=\"745\" height=\"325\">\n              \u003Csource srcset=\"/sites/default/files/styles/image_width_xxsmall/public/wp-migration/wordpress-media-image/2015/02/Screen-Shot-2015-02-02-at-15.59.25-1.png.webp?itok=4TQt9mHI 1x, /sites/default/files/styles/image_width_xxsmall_x2/public/wp-migration/wordpress-media-image/2015/02/Screen-Shot-2015-02-02-at-15.59.25-1.png.webp?itok=IOPGQMe5 2x\" media=\"all and (max-width: 479px)\" type=\"image/webp\" width=\"480\" height=\"210\">\n              \u003Csource srcset=\"/sites/default/files/styles/image_width_large/public/wp-migration/wordpress-media-image/2015/02/Screen-Shot-2015-02-02-at-15.59.25-1.png.webp?itok=4RblonGP 1x, /sites/default/files/styles/image_width_large_x2/public/wp-migration/wordpress-media-image/2015/02/Screen-Shot-2015-02-02-at-15.59.25-1.png.webp?itok=HmOkIANQ 2x\" type=\"image/webp\" width=\"1392\" height=\"608\">\n                  \u003Cimg loading=\"lazy\" width=\"1392\" height=\"608\" src=\"/sites/default/files/styles/image_width_large_x2/public/wp-migration/wordpress-media-image/2015/02/Screen-Shot-2015-02-02-at-15.59.25-1.png.jpg?itok=HmOkIANQ\" alt=\"Laravel 5 Dateistruktur\" title=\"Laravel 5 Dateistruktur\">\n\n  \u003C/picture>\n\n\u003C/div>\n          \u003C/div>\n\n\u003C/div>\n\u003C/div>\n\u003Cp>Einer der Gründe warum Laravel 4.3 jetzt doch zu Laravel 5 wurde ist die Veränderung der Datei Struktur. Früher war quasi die komplette Applikation in dem Ordner app/ zu finden. Dieser Ordner wurde jetzt mächtig aufgeräumt und beinhaltet nur noch die Logik der Applikation selbst. Configs und datenbank-relevante Daten wurden ins Hauptverzeichnis darüber verschoben.\u003Cbr>\nDer Models Ordner wurde komplett entfernt. Dies haben viele Entwickler schon länger so gemacht und die Models direkt in den entsprechenden Bereich der Business-Logik verschoben. Es spricht aber natürlich auch nichts dagegen einen Models Ordner wieder zu erstellen.\u003Cbr>\nAuch Views und Sprachdateien haben einen neuen Platz im Hauptverzeichnis unter “resources” bekommen. Hier ist jetzt auch Platz für andere Assets.\u003Cbr>\nInsgesamt ist die Dateistruktur mit Laravel 5 aufgeräumter, flexibler und auch bereit für große Projekte.\u003Cbr>\n\u003C/p>\n\u003Ch2>Blade\u003C/h2>\n\u003Cp>In Laravel gab es für Blade doppelte und dreifache geschwungene Klammer für einen Raw-Output und einen gesäuberten Output. ( {{…}} oder {{{…}}} )\u003Cbr>\nAb jetzt liefern beide Funktionen letzteres und der Raw-Output wird mit Rufzeichen in der Syntax verwendet.\u003Cbr>\n&nbsp;\u003C/p>\n\u003Cpre class>    {!! Form::open() !!}\n\u003C/pre>\n\u003Ch2>Namespacing\u003C/h2>\n\u003Cp>Passend zur neuen Dateistruktur verwendet &nbsp;Laravel 5 jetzt namespaces out of the box. Hier wird PSR-4 autoloading eingesetzt um den namespace “App” auf den Ordner “app/“ zu verweisen. Dieser top-level Namespace&nbsp;kann jedoch leicht mit einem Artisan Command überall gleichzeitig geändert werden.\u003Cbr>\n&nbsp;\u003C/p>\n\u003Cpre lang=\"ps\">php artisan app:name Acme\n\u003C/pre>\n\u003Cp>&nbsp;\u003C/p>\n\u003Ch2>Form Requests\u003C/h2>\n\u003Cp>Form Requests ist ein neues Feature in Laravel 5 mit dem Form-Validation und Authorization einen eigenen Platz bekommen haben. Dadurch &nbsp;müssen&nbsp;Models und Controllers nicht mehr mit dieser Logik belagert werden. Es gehört zu meinen Lieblingsneuerungen und deswegen werde ich hier auch etwas ins Detail gehen. Ein Artisan Befehl erstellt die nötige Klasse.\u003Cbr>\n&nbsp;\u003C/p>\n\u003Cpre lang=\"ps\">    php artisan make:request StorePostRequest\n\u003C/pre>\n\u003Cp>&nbsp;\u003Cbr>\nDie Request-Klasse wird im Requests Ordner erstellt und beinhaltet&nbsp;mindestens das&nbsp;“rules”-Array&nbsp;und eine „authorize()” Methode. Die Rules dienen der&nbsp;Validierung und die erwähnte Methode prüft ob der Nutzer hier überhaupt richtig ist.\u003Cbr>\n&nbsp;\u003C/p>\n\u003Cpre lang=\"php\">....\n    class StorePostRequest&nbsp;extends FormRequest&nbsp;{\n        public function rules()&nbsp;{\n            return [\n                'title' =&gt; 'required',\n                'message' =&gt; 'required'\n            ];\n        }\n        public function authorize()&nbsp;{\n             // Only allow logged in users\n             return \\Auth::check();\n       }\n    }\n\u003C/pre>\n\u003Cp>&nbsp;\u003Cbr>\nUm ein&nbsp;Request Objekt zu verwenden, wird es direkt in die gewünschte Controller Methode injiziert. Bevor der Inhalt der Methode aufgerufen wird, findet nun das&nbsp;Validieren&nbsp;statt. Natürlich nur, wenn die “authorize()” Methode TRUE&nbsp;zurückgibt.\u003Cbr>\n&nbsp;\u003C/p>\n\u003Cpre lang=\"php\">    // Inject the request class to the controller method\n    public function storePost(StorePostRequest $request) {\n        ...\n    }\n\u003C/pre>\n\u003Cp>&nbsp;\u003Cbr>\nNatürlich ist ein simples Validieren wie bisher immer noch&nbsp;möglich und Form Request bleiben optional.\u003Cbr>\n\u003Ca title=\"Laravel Form Requests\" href=\"http://laravel.com/docs/5.0/validation#form-request-validation\" target=\"_blank\" rel=\"noopener noreferrer\">Link zur Doku\u003C/a>\u003Cbr>\n&nbsp;\u003C/p>\n\u003Ch2>Method injection\u003C/h2>\n\u003Cp>Üblicherweise werden Abhängigkeiten in Laravel über den Konstruktor geladen. Dadurch waren diese in der gesamten Klasse erreichbar. Jetzt ist das aber auch direkt in einer Methode möglich.\u003Cbr>\n\u003Ca title=\"Laravel Method Injection\" href=\"http://laravel.com/docs/5.0/controllers#dependency-injection-and-controllers\" target=\"_blank\" rel=\"noopener noreferrer\">Link zur Doku\u003C/a>\u003C/p>\n\u003Ch2>Commands &amp; Events\u003C/h2>\n\u003Cp>Command ist ein beleibtes Design Pattern bei dem, grob gesagt, Komponenten von einander entkoppelt werden. Das hat den Vorteil dass diese Komponenten besser wiederverwendet und getestet werden können. Dieses Prinzip gab es auch schon in Laravel 4, doch jetzt gibt es einen neues Artisan Shortcut der die Arbeit mit Commands sehr erleichtert.\u003Cbr>\nDadurch wird gleich eine Klasse für den Handler und eine für den&nbsp;Command erstellt. Events funktionieren jetzt auch sehr ähnlich und es gibt natürlich auch hier einen neuen Artisan Shortcut:\u003C/p>\n\u003Cpre lang=\"ps\">    php artisan make:event ThingWasDone\n\u003C/pre>\n\u003Cp>&nbsp;\u003Cbr>\n\u003Ca title=\"Laracast Command Video Tuturial\" href=\"https://laracasts.com/lessons/laravel-5-commands\" target=\"_blank\" rel=\"noopener noreferrer\">Link zum Laracast Video Tutorial\u003C/a>\u003C/p>\n\u003Ch2>Routes\u003C/h2>\n\u003Cp>Routes haben jetzt einen eigenen Cache. Der hilft besonders wenn man in seiner Applikation sehr, sehr viele Routes definiert hat und kann einige hundert Millisekunden Zeitersparnis bringen. Funktionieren tut das ganze wieder über Artisan.\u003Cbr>\n&nbsp;\u003C/p>\n\u003Cpre lang=\"ps\">    php artisan route:cache\n\u003C/pre>\n\u003Cp>&nbsp;\u003Cbr>\nAchtung: nach dem ersten Aufruf muss die Funktion nach jeder weiteren Änderung der Routes aufgerufen werden.\u003Cbr>\n\u003Ca title=\"Laravel Route Caching\" href=\"http://laravel.com/docs/5.0/controllers#route-caching\" target=\"_blank\" rel=\"noopener noreferrer\">Link zur Doku\u003C/a>\u003C/p>\n\u003Ch2>Flysystem\u003C/h2>\n\u003Cp>Dieses Package könnte euch schon ein Begriff sein. Es ist quasi das standard PHP Package für die Einbindung von lokalen oder Remote-Dateisystemen. Es ist in Laravel jetzt direkt, mit einer eigenen Abstraktion, integriert.\u003Cbr>\n\u003Ca title=\"Flysystem\" href=\"https://github.com/thephpleague/flysystem\" target=\"_blank\" rel=\"noopener noreferrer\">Link zur Doku\u003C/a>\u003C/p>\n\u003Ch2>Environment\u003C/h2>\n\u003Cp>Environment Detection in L4 war etwas holprig und wurde deshalb komplett überarbeitet. Hier wird nun auf das PHP Package dotenv gesetzt. Im Projekt Root kann man &nbsp;.env Dateien erstellen. Diese beinhalten z.B. die DB Zugangsdaten für die lokale Entwicklung. In der DB-Config wir dann über eine Funktion die richtigen Daten geladen.\u003Cbr>\n&nbsp;\u003C/p>\n\u003Cpre lang=\"php\">    return array(\n        ...\n        'database' =&gt; env('DB_DATABASE’, 'myproddb'),\n        ...\n    );\n\u003C/pre>\n\u003Cp>&nbsp;\u003Cbr>\nDie Funktion env() sucht, je nach derzeitiger&nbsp;Umgebung, den Wert&nbsp;von “DB_DATABASE” in der entsprechenden „.env” Datei. Für die Live-Datenbank oder für Testing können eigene .env Dateien angelegt werden.\u003Cbr>\n\u003Ca title=\"Laravel 5 Environment\" href=\"http://laravel.com/docs/5.0/configuration#environment-configuration\" target=\"_blank\" rel=\"noopener noreferrer\">Link zur Doku\u003C/a>\u003C/p>\n\u003Ch2>Middleware\u003C/h2>\n\u003Cp>Obwohl Middlewares in Laravel seit 4.1 intern verwendet werden, taucht der Begriff für den Benutzer erst jetzt auf. Wenn ein HTTP Request eure App erreicht, muss er zuerst durch verschiede Ebenen durch, bevor er euren Code erreicht. (Route / Controller) Zu diesen Ebenen gehört Session / Cookie Check, CSRF Schutz oder Authentication. Neben den Middlewares die intern verwendet werden, können jetzt auch eigene erstellt werden. Diese ersetzen z.B. die bisherigen Filter.\u003Cbr>\n&nbsp;\u003C/p>\n\u003Cpre lang=\"ps\">    artisan make:middleware&nbsp;MiddlewareName\n\u003C/pre>\n\u003Cp>&nbsp;\u003Cbr>\nDieser Befehl erstellt die gewünschte Middleware Klasse im neuen Middleware Ordner.\u003Cbr>\n\u003Ca title=\"Laravel 5 Middleware\" href=\"http://laravel.com/docs/5.0/middleware\" target=\"_blank\" rel=\"noopener noreferrer\">Link zur Doku\u003C/a>\u003C/p>\n\u003Ch2>Laravel Scheduler\u003C/h2>\n\u003Cp>Wer viel mit Cronjobs arbeitet, wird sich über den neuen Scheduler freuen. Nötig dafür ist nur ein erster Cronjob der „artisan schedule:run” jede Minute aufruft. Die einfach Syntax hilft dann bei der Erstellung von weiteren Cronjobs.\u003Cbr>\n&nbsp;\u003C/p>\n\u003Cpre lang=\"php\">    // Example cronjob\n    $schedule-&gt;command('cache:clear')\n        -&gt;hourly()\n        -&gt;sendOutputTo($filePath)\n        -&gt;emailOutputTo('me@domain.com');\n\u003C/pre>\n\u003Cp>&nbsp;\u003C/p>\n\u003Ch2>Socialite\u003C/h2>\n\u003Cp>Wer findet die OAuth Implementierung noch so schrecklich? Socialite ist ein optionales Laravel Package, das genau das vereinfachen soll. Derzeit werden Facebook, Twitter, Google und GitHub unterstützt.\u003Cbr>\n\u003Ca title=\"Laravel Socialite\" href=\"http://laravel.com/docs/5.0/authentication#social-authentication\" target=\"_blank\" rel=\"noopener noreferrer\">Link zur Doku\u003C/a>\u003C/p>\n\u003Ch2>Elixir\u003C/h2>\n\u003Cp>Mit Elixir gibt es jetzt in Laravel 5 einen Wrapper für den JavaScript Task-Manger \u003Ca title=\"Liechtenecker gulp\" href=\"/front-end-workflow-mit-gulp/\" target=\"_blank\" rel=\"noopener noreferrer\">Gulp\u003C/a>. Dadurch lassen sich Assets wie Styles oder Scripts einfach verarbeiten. (Sass, less, CoffeScript…) Da die Meisten diese Tasks sowieso schon täglich verwenden, macht es auch Sinn diese jetzt in Laravel zu unterstützen. Natürlich&nbsp;wieder optional\u003Cbr>\n&nbsp;\u003C/p>\n\u003Cpre lang=\"ps\">    elixir(function(mix) {\n        mix.scripts([\n            \"jquery.js\",\n            \"app.js\"\n        ]);\n    });\n\u003C/pre>\n\u003Cp>&nbsp;\u003Cbr>\n\u003Ca title=\"Laravel Elixir\" href=\"https://github.com/laravel/elixir\" target=\"_blank\" rel=\"noopener noreferrer\">Link zur Doku\u003C/a>\u003C/p>\n\u003Ch2>Upgrade\u003C/h2>\n\u003Cp>Leider ist es mit einem “composer update” hier nicht getan. Es handelt sich um einen Major Release&nbsp;und es hat sich doch einiges getan. Empfohlen wird mit einer neuen leeren L5 Applikation zu beginnen und dann die bestehende App darin zu integrieren. &nbsp;Man sollte sich auf jeden Fall etwas Zeit dafür nehmen und die Dokumentation hilft natürlich dabei. Das Upgrade zahlt sich aber auf jeden Fall aus.\u003Cbr>\n\u003Ca title=\"Laravel Upgrade Doku\" href=\"http://laravel.com/docs/5.0/upgrade#upgrade-5.0\" target=\"_blank\" rel=\"noopener noreferrer\">Link zur Doku\u003C/a>\u003C/p>\n\u003Ch2>Video Tutorials\u003C/h2>\n\u003Cp>Auf \u003Ca title=\"Laracasts\" href=\"https://laracasts.com/series/laravel-5-fundamentals\" target=\"_blank\" rel=\"noopener noreferrer\">Laracasts\u003C/a>, der Plattform für Laravel und PHP Video Tutorials , gibt es eine komplette Serie über Laravel 5. Diese ist gratis und kann ich jedem nur ans Herz legen.\u003C/p>\n        \u003C/div>\n    \u003C/div>\n\u003C/div>\n\n\n",{"__typename":160,"id":161,"excludeFromScreenreader":13,"mediaImage":162,"name":167,"path":170,"status":20},"MediaImage","2066",{"__typename":163,"url":164,"width":165,"height":166,"alt":167,"title":167,"size":168,"mime":169},"Image","http://liechtenecker-cms.liechtenecker-cms.svc.cluster.local/sites/default/files/wp-migration/wordpress-media-image/2015/02/dev_11-1.jpg",1920,1280,"Liechtenecker Büro",66009,"image/jpeg","/media/2066/edit","\u003C!-- This site is optimized with the Yoast SEO plugin v15.7 - https://yoast.com/wordpress/plugins/seo/ -->\n\u003Cmeta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" />\n\u003Clink rel=\"canonical\" href=\"https://legacy.liechtenecker.dev/blog/laravel-5-alle-neuerungen-im-ueberblick/\" />\n\u003Cmeta property=\"og:locale\" content=\"de_DE\" />\n\u003Cmeta property=\"og:type\" content=\"article\" />\n\u003Cmeta property=\"og:title\" content=\"Laravel 5 - Alle Neuerungen im Überblick - Liechtenecker\" />\n\u003Cmeta property=\"og:description\" content=\"Das neue Jahr hat gerade erst begonnen und schon geht es auch in der Welt des Webs voran. Besonders freue ich mich über den Release vom PHP Framework Laravel 5. Lange hat es gedauert und es wurde viel spekuliert. Jetzt ist es aber da und alles was ihr darüber wissen müsst ist hier in diesem [&hellip;]\" />\n\u003Cmeta property=\"og:url\" content=\"https://legacy.liechtenecker.dev/blog/laravel-5-alle-neuerungen-im-ueberblick/\" />\n\u003Cmeta property=\"og:site_name\" content=\"Liechtenecker\" />\n\u003Cmeta property=\"article:published_time\" content=\"2015-02-10T10:27:18+00:00\" />\n\u003Cmeta property=\"article:modified_time\" content=\"2019-04-09T10:23:34+00:00\" />\n\u003Cmeta property=\"og:image\" content=\"https://legacy.liechtenecker.dev/wp-content/uploads/2015/02/laravel5-1.png\" />\n\u003Cmeta name=\"twitter:card\" content=\"summary_large_image\" />\n\u003Cmeta name=\"twitter:label1\" content=\"Geschätzte Lesezeit\">\n\t\u003Cmeta name=\"twitter:data1\" content=\"6 Minuten\">\n\u003Cscript type=\"application/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https://legacy.liechtenecker.dev/#website\",\"url\":\"https://legacy.liechtenecker.dev/\",\"name\":\"Liechtenecker\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https://legacy.liechtenecker.dev/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de-DE\"},{\"@type\":\"ImageObject\",\"@id\":\"https://legacy.liechtenecker.dev/blog/laravel-5-alle-neuerungen-im-ueberblick/#primaryimage\",\"inLanguage\":\"de-DE\",\"url\":\"https://legacy.liechtenecker.dev/wp-content/uploads/2015/02/laravel5-1.png\",\"width\":1000,\"height\":400,\"caption\":\"Laravel 5\"},{\"@type\":\"WebPage\",\"@id\":\"https://legacy.liechtenecker.dev/blog/laravel-5-alle-neuerungen-im-ueberblick/#webpage\",\"url\":\"https://legacy.liechtenecker.dev/blog/laravel-5-alle-neuerungen-im-ueberblick/\",\"name\":\"Laravel 5 - Alle Neuerungen im \\u00dcberblick - Liechtenecker\",\"isPartOf\":{\"@id\":\"https://legacy.liechtenecker.dev/#website\"},\"primaryImageOfPage\":{\"@id\":\"https://legacy.liechtenecker.dev/blog/laravel-5-alle-neuerungen-im-ueberblick/#primaryimage\"},\"datePublished\":\"2015-02-10T10:27:18+00:00\",\"dateModified\":\"2019-04-09T10:23:34+00:00\",\"author\":{\"@id\":\"https://legacy.liechtenecker.dev/#/schema/person/c6a4fab1680ccc1ec0ed63179501b4b1\"},\"inLanguage\":\"de-DE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https://legacy.liechtenecker.dev/blog/laravel-5-alle-neuerungen-im-ueberblick/\"]}]},{\"@type\":\"Person\",\"@id\":\"https://legacy.liechtenecker.dev/#/schema/person/c6a4fab1680ccc1ec0ed63179501b4b1\",\"name\":\"Christoph Rumpel\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https://legacy.liechtenecker.dev/#personlogo\",\"inLanguage\":\"de-DE\",\"url\":\"https://secure.gravatar.com/avatar/3191eb8b348673db049a15f94835ba83?s=96&d=mm&r=g\",\"caption\":\"Christoph Rumpel\"}}]}\u003C/script>\n\u003C!-- / Yoast SEO plugin. -->",{"__typename":173,"id":174,"myRole":175,"name":176,"nickname":177},"User","4","-","c-rumpel","Christoph Rumpel",{"latestKnowhow":179},[180,195,208],{"__typename":79,"id":181,"title":182,"path":183,"wpTeaserText":184,"wpPromotedTeaserImage":13,"wpHeaderImage":185},"1619","Behind the scenes: Ein Barrierefreiheits-Audit","/blog/behind-scenes-ein-barrierefreiheits-audit","”Entspricht unsere Website den gesetzlichen Anforderungen und wenn nicht, was genau müssen wir ändern?”\r\nDiese Frage lieben wir. Echt! Und so sieht unsere Antwort aus.",{"__typename":160,"id":186,"excludeFromScreenreader":13,"mediaImage":187,"name":193,"path":194,"status":20},"3364",{"__typename":163,"url":188,"width":189,"height":190,"alt":191,"title":13,"size":192,"mime":169},"http://liechtenecker-cms.liechtenecker-cms.svc.cluster.local/sites/default/files/2026-04/Headerbilder%20Blogartikel%20Behind%20the%20scene%20Accessibility%20Audit.jpg",2880,1300,"Headline mit Sujet: Tastatur mit Symbolen für Barrierefreiheit im Fokus auf hellem  Hintergrund",838204,"Headerbilder Blogartikel Behind the scene Accessibility Audit.jpg","/media/3364/edit",{"__typename":79,"id":196,"title":197,"path":198,"wpTeaserText":199,"wpPromotedTeaserImage":13,"wpHeaderImage":200},"1616","Agentic KI trifft Design-System: Wie unser Presentation Maker entstand.","/blog/agentic-ki-trifft-design-system-wie-unser-presentation-maker-entstand","Nein, wir wollen euch jetzt nicht erzählen, was KI alles kann. Aber wir möchten euch zeigen, wie wir mit KI umgehen. \r\n",{"__typename":160,"id":201,"excludeFromScreenreader":13,"mediaImage":202,"name":206,"path":207,"status":20},"3355",{"__typename":163,"url":203,"width":189,"height":190,"alt":204,"title":13,"size":205,"mime":169},"http://liechtenecker-cms.liechtenecker-cms.svc.cluster.local/sites/default/files/2026-03/BLOG_Presentation%20Tool_TITEL-2880x1300px_1.jpg","Lukas und Daniel  arbeiten an Computern im Büro.",2621988,"BLOG_Presentation Tool_TITEL-2880x1300px.jpg","/media/3355/edit",{"__typename":79,"id":209,"title":210,"path":211,"wpTeaserText":13,"wpPromotedTeaserImage":13,"wpHeaderImage":212},"1606","UI Trends 2026","/blog/ui-trends-2026",{"__typename":160,"id":213,"excludeFromScreenreader":21,"mediaImage":214,"name":218,"path":219,"status":20},"3303",{"__typename":163,"url":215,"width":189,"height":190,"alt":216,"title":13,"size":217,"mime":169},"http://liechtenecker-cms.liechtenecker-cms.svc.cluster.local/sites/default/files/2026-01/BLOG_Trendbericht%202026.jpg","UI Trends 2026, gelber Hintergrund, schwarze Schrift.",4700748,"BLOG_Trendbericht 2026.jpg","/media/3303/edit",{"Language:de":221,"MenuItem:e2873307-b50a-4aab-b6b2-1950fd99c72e":222,"MenuItem:2cd9b7c9-142a-4ea3-b898-a0952c54a195":226,"MenuItem:a5effba3-5a8c-4125-8d78-0cdba09824db":229,"MenuItem:114bf071-bdbb-44cf-85c1-69e9d9e0777d":232,"Menu:footer":235,"ROOT_QUERY":245,"MenuItem:9ffc5019-cbd8-4b2e-8eb7-9feae486d4a1":261,"MenuItem:1c7a5430-8a42-4b24-9544-252adabc2f4c":264,"MenuItem:9c4feedc-79e4-4fbf-b68c-065f33ebfe4c":267,"MenuItem:3b77a27b-272a-489f-843e-53e23ed07741":270,"MenuItem:ce0bb82b-e1ee-4036-be95-f693a62e9f4a":273,"MenuItem:04a19381-81a9-4694-8653-182d8855d2b5":276,"Menu:nuxt-main-menu":279,"TermCategories:7":293,"TermTags:501":304,"TermTags:736":305,"TermTags:742":306,"TermTags:965":307,"MediaImage:2066":308,"User:4":310,"NodeWpPost:960":311,"MediaImage:3364":338,"NodeWpPost:1619":340,"MediaImage:3355":343,"NodeWpPost:1616":345,"MediaImage:3303":348,"NodeWpPost:1606":350},["null","__typename",16,"id",17,"name",18,"direction",19],["null","__typename",10,"id",11,"title",12,"description",13,"url",14,"langcode",223,"internal",20,"expanded",21,"attributes",225],{"__ref":224},"Language:de",["null","__typename",23,"class",13],["null","__typename",10,"id",25,"title",26,"description",13,"url",27,"langcode",227,"internal",20,"expanded",21,"attributes",228],{"__ref":224},["null","__typename",23,"class",13],["null","__typename",10,"id",30,"title",31,"description",13,"url",32,"langcode",230,"internal",20,"expanded",21,"attributes",231],{"__ref":224},["null","__typename",23,"class",13],["null","__typename",10,"id",35,"title",36,"description",13,"url",37,"langcode",233,"internal",21,"expanded",21,"attributes",234],{"__ref":224},["null","__typename",23,"class",13],["null","__typename",5,"id",6,"name",7,"items",236],[237,239,241,243],{"__ref":238},"MenuItem:e2873307-b50a-4aab-b6b2-1950fd99c72e",{"__ref":240},"MenuItem:2cd9b7c9-142a-4ea3-b898-a0952c54a195",{"__ref":242},"MenuItem:a5effba3-5a8c-4125-8d78-0cdba09824db",{"__ref":244},"MenuItem:114bf071-bdbb-44cf-85c1-69e9d9e0777d",["null","__typename",246,"menu({\"name\":\"FOOTER\"})",247,"menu({\"name\":\"NUXT_MAIN_MENU\"})",249,"route({\"path\":\"/blog/laravel-5-alle-neuerungen-im-ueberblick\"})",251,"latestKnowhow({\"excludeId\":\"960\",\"limit\":3})",254],"Query",{"__ref":248},"Menu:footer",{"__ref":250},"Menu:nuxt-main-menu",["null","__typename",77,"entity",252],{"__ref":253},"NodeWpPost:960",[255,257,259],{"__ref":256},"NodeWpPost:1619",{"__ref":258},"NodeWpPost:1616",{"__ref":260},"NodeWpPost:1606",["null","__typename",10,"id",45,"title",46,"description",13,"url",47,"langcode",262,"internal",20,"expanded",21,"attributes",263],{"__ref":224},["null","__typename",23,"class",13],["null","__typename",10,"id",51,"title",52,"description",13,"url",53,"langcode",265,"internal",20,"expanded",21,"attributes",266],{"__ref":224},["null","__typename",23,"class",13],["null","__typename",10,"id",56,"title",57,"description",13,"url",58,"langcode",268,"internal",20,"expanded",21,"attributes",269],{"__ref":224},["null","__typename",23,"class",13],["null","__typename",10,"id",61,"title",62,"description",13,"url",63,"langcode",271,"internal",20,"expanded",21,"attributes",272],{"__ref":224},["null","__typename",23,"class",13],["null","__typename",10,"id",66,"title",67,"description",13,"url",68,"langcode",274,"internal",20,"expanded",21,"attributes",275],{"__ref":224},["null","__typename",23,"class",13],["null","__typename",10,"id",71,"title",72,"description",13,"url",73,"langcode",277,"internal",20,"expanded",21,"attributes",278],{"__ref":224},["null","__typename",23,"class",13],["null","__typename",5,"id",41,"name",42,"items",280],[281,283,285,287,289,291],{"__ref":282},"MenuItem:9ffc5019-cbd8-4b2e-8eb7-9feae486d4a1",{"__ref":284},"MenuItem:1c7a5430-8a42-4b24-9544-252adabc2f4c",{"__ref":286},"MenuItem:9c4feedc-79e4-4fbf-b68c-065f33ebfe4c",{"__ref":288},"MenuItem:3b77a27b-272a-489f-843e-53e23ed07741",{"__ref":290},"MenuItem:ce0bb82b-e1ee-4036-be95-f693a62e9f4a",{"__ref":292},"MenuItem:04a19381-81a9-4694-8653-182d8855d2b5",["null","__typename",114,"id",115,"name",116,"path",117,"status",20,"weight",118,"description",294,"langcode",295,"changed",296,"metatag",297],["null","__typename",120,"processed",121,"format",122],{"__ref":224},["null","__typename",83,"timestamp",125,"timezone",85,"offset",86,"time",126],[298,300,302],["null","__typename",95,"tag",96,"attributes",299],["null","__typename",98,"name",99,"content",130],["null","__typename",95,"tag",96,"attributes",301],["null","__typename",98,"name",133,"content",134],["null","__typename",102,"tag",103,"attributes",303],["null","__typename",105,"href",137,"hreflang",13,"rel",107,"media",13,"sizes",13,"type",13],["null","__typename",140,"id",141,"name",142,"path",143,"weight",118],["null","__typename",140,"id",145,"name",146,"path",147,"weight",118],["null","__typename",140,"id",149,"name",150,"path",151,"weight",118],["null","__typename",140,"id",153,"name",154,"path",155,"weight",118],["null","__typename",160,"id",161,"excludeFromScreenreader",13,"mediaImage",309,"name",167,"path",170,"status",20],["null","__typename",163,"url",164,"width",165,"height",166,"alt",167,"title",167,"size",168,"mime",169],["null","__typename",173,"id",174,"myRole",175,"name",176,"nickname",177],["null","__typename",79,"id",80,"title",81,"changed",312,"created",313,"langcode",314,"path",92,"promote",21,"status",20,"sticky",21,"metatag",315,"category",322,"contentElements",13,"evergreen",13,"tags",324,"wpBody",333,"wpHeaderImage",13,"wpHeaderImageOld",334,"wpHeaderImageOldSmall",13,"wpOgImage",13,"wpPromotedTeaserImage",13,"wpShareDescription",13,"wpShareTitle",13,"wpTeaserText",13,"wpYoastHead",171,"author",336],["null","__typename",83,"timestamp",84,"timezone",85,"offset",86,"time",87],["null","__typename",83,"timestamp",89,"timezone",85,"offset",86,"time",90],{"__ref":224},[316,318,320],["null","__typename",95,"tag",96,"attributes",317],["null","__typename",98,"name",99,"content",100],["null","__typename",102,"tag",103,"attributes",319],["null","__typename",105,"href",106,"hreflang",13,"rel",107,"media",13,"sizes",13,"type",13],["null","__typename",109,"tag",96,"attributes",321],["null","__typename",111,"property",112,"content",81],{"__ref":323},"TermCategories:7",[325,327,329,331],{"__ref":326},"TermTags:501",{"__ref":328},"TermTags:736",{"__ref":330},"TermTags:742",{"__ref":332},"TermTags:965",["null","__typename",157,"processed",158,"format",122,"summary",13],{"__ref":335},"MediaImage:2066",{"__ref":337},"User:4",["null","__typename",160,"id",186,"excludeFromScreenreader",13,"mediaImage",339,"name",193,"path",194,"status",20],["null","__typename",163,"url",188,"width",189,"height",190,"alt",191,"title",13,"size",192,"mime",169],["null","__typename",79,"id",181,"title",182,"path",183,"wpTeaserText",184,"wpPromotedTeaserImage",13,"wpHeaderImage",341],{"__ref":342},"MediaImage:3364",["null","__typename",160,"id",201,"excludeFromScreenreader",13,"mediaImage",344,"name",206,"path",207,"status",20],["null","__typename",163,"url",203,"width",189,"height",190,"alt",204,"title",13,"size",205,"mime",169],["null","__typename",79,"id",196,"title",197,"path",198,"wpTeaserText",199,"wpPromotedTeaserImage",13,"wpHeaderImage",346],{"__ref":347},"MediaImage:3355",["null","__typename",160,"id",213,"excludeFromScreenreader",21,"mediaImage",349,"name",218,"path",219,"status",20],["null","__typename",163,"url",215,"width",189,"height",190,"alt",216,"title",13,"size",217,"mime",169],["null","__typename",79,"id",209,"title",210,"path",211,"wpTeaserText",13,"wpPromotedTeaserImage",13,"wpHeaderImage",351],{"__ref":352},"MediaImage:3303"]