UX9 URL Shortener: Upgrade auf Laravel 8 – Teil 1

Ich habe wieder einmal meinen Urlaub genutzt, um einige meiner privaten Projekte weiter zu entwickeln. Eines meiner derzeit größten Projekten ist mein eigener URL Shortener: https://ux9.de

Das ist neben meiner eigenen Homepage mittlerweile auch das Projekt, welches am längsten läuft. Bereits Ende 2009 habe ich mit den ersten Ideen dazu angefangen und diese noch auf meinem derzeitigen Blog (kein WordPress) genutzt, um externe Verlinkungen zu analysieren und durch eine einfache Verkürzung besser darstellen zu können. Mit dem Erwerb von mehreren dreistelligen Domains, hat mein URL Shortener dann in den darauffolgenden Jahren auch seine eigene Seite bekommen.

Das Projekt wurde mit der Zeit stetig erweitert. Die ersten Jahre habe ich nur PHP ohne Framework verwendet. Seit 2015 habe ich dort dann mit Laravel 4.2 bzw. Laravel 5 als Framework begonnen. Dabei habe ich auch die Grundstruktur des Projektes neu organisiert. Neben stetigen Weiterentwicklungen gab es zuletzt ein Upgrade auf Laravel 6 im September 2019.

Die darauffolgenden Jahre war ich mir nicht sicher, ob ich das Projekt überhaupt noch weiter betreiben möchte oder nicht. Nach viel Überlegen habe ich mich aber dazu entschlossen, das Projekt weiter laufen zu lassen. Die Vorraussetzung dafür ist aber, dass das Projekt von Grund auf neu strukturiert wird, mit Unit-Test ergänzt wird und es eine vernünftige Möglichkeit gibt, dass Administratoren die einzelnen Module verwalten können.

Die Umstellung meiner Seite, möchte ich in dieser Serie von Beiträgen mit euch teilen. Ich hoffe ich kann damit einen kleinen Einblick geben, wie man Projekte sinnvoll umstellen kann. Die Teile werden in den nächsten 1-2 Wochen erscheinen.

Composer 2.0 ist erschienen

Endlich ist es soweit. Eine neue Major Version von Composer, dem Paket Manager von PHP, ist erschienen.

Was ihr außer einer erheblichen Performance Verbesserung noch alles erwarten könnt, gibt es auf dem offiziellen Blog von Packagist nachzulesen.

https://blog.packagist.com/composer-2-0-is-now-available/

Was gibt es neues in PHP 8

Ende des Jahres ist es wieder soweit. Eine neue Major Version von PHP wird erscheinen.

Am 26. November 2020 soll sie erscheinen. Welche Neuerungen bereits bekannt sind könnt ihr in diesem Blogbeitrag von Brent (@brendt_gd) nachlesen.

Hier ein kurzer Überblick:

  • Union types
  • Just in time compiler (JIT)
  • Attributes (or Annotations)
  • Constructor property promotion
    static and mixed return type
    throw expression
    Trailing comma in parameter list

Das war allerdings nur ein kleiner Auszug von allen neuen Features.

Jahr des Bloggens

Nachdem ich mir heute die WordPress App erneut herunter geladen habe, musste ich mit Schrecken feststellen, dass ich im vergangenen Jahr 2019, lediglich vier Blogeinträge erstellt habe.

Bei näherer Betrachtung hatte ich noch etwa 10 als Entwurf vorbereitet, wovon aber mindestens die Hälfte nicht mehr aktuell sind oder das Thema nicht mehr passt.

Das möchte ich dieses Jahr drastisch ändern. Ich versuche mindestens einmal pro Woche einen Eintrag zu schreiben. Außerdem werde ich die Kategorien anpassen und vermutlich auch regelmäßig kleinere Beiträge schreiben, bei denen ich das ganze SEO-Thema nicht ganz so ernst nehmen werde.

Den Content werde ich dann noch teilweise für meinen Newsletter verwenden, der ja auch in der Häufigkeit etwas abgenommen hat. Zuletzt werde ich in unbestimmten Zeitabständen alle möglichen Neuerungen meiner Apps hier präsentieren. Da wurde ich in den letzten Wochen immer wieder darauf angesprochen.

Die entsprechenden Erinnerungen habe ich bereits in Todoist hinterlegt, sodass ich es nicht vergessen werde.

Der nächste Eintrag wird von meinen letzten Upgrades Richtung PHP 7.4 und Laravel 6 handeln.

PHP Stories: Letztes Array Element [Laravel]

Bevor ich eine wesentlich schnellere Variante mit Laravel zeige, zunächst nochmal ein Rückblick. In einem älteren Beitrag, aus dem Jahr 2016 (PHP Stories: Letztes Array Element), habe ich geschrieben, wie man das letzte Element eines Arrays ermittelt kann. Durch die in PHP vorhandene Funktion end() rückt man den internen Zeiger vom Array bis zum letzten Element vor, und gibt dann dessen Wert zurück.

Eine „Einzeiler“ Varianter die ein Benutzer kommentiert hatte sieht in etwa wie folgt aus:

<?php
$array = ['Toby', 'Lars', 'Yutta', 'Nils'];
echo "Der letzte ist " . $array[array_keys($array)[sizeof($array)-1]];

// Ausgabe: Der letzte ist Nils

An dieser Stelle lohnt es sich nochmal einen Blick auf das PHP-Framework Laravel zu werfen. Hier gibt es bereits Funktionen die solche Probleme komplett auflösen. In Laravel könnte ein Code Beispiel wie folgt aussehen:

<?php
$collection = collect(['Toby', 'Lars', 'Yutta', 'Nils']);

echo $collection->last() . " ist der letzte <br>";
echo $collection->first() . " ist der letzte <br>";

// Ausgabe: Nils ist der letzte <br>Toby ist der letzte <br>

Mit dieser Variante wird anstatt einem Array ein „Collection“ Objekt erstellt. Diese Klasse enthält diverse Interfaces die dafür sorgen, dass das Objekt wie ein Array verwendet werden kann. Neben Methoden wie first, last, count oder filter gibt es viele weitere Methoden um mit einer „Collection“ von Elementen umzugehen.

Für jeden der noch nichts mit Laravel gemacht hat, sollte sich das Framework unbedingt einmal näher anschauen.