<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/vendor/feed/atom.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US">
                        <id>http://blog.maxham.de/feed/php</id>
                                <link href="http://blog.maxham.de/feed/php" rel="self"></link>
                                <title><![CDATA[blog.maxham.de - all PHP blogposts]]></title>
                    
                                <subtitle>All PHP blogposts on blog.maxham.de</subtitle>
                                                    <updated>2025-12-15T23:35:32+01:00</updated>
                        <entry>
            <title><![CDATA[★ Zhylon Realtime: Datenschutz und Kontrolle in Echtzeit-Events]]></title>
            <link rel="alternate" href="https://blog.maxham.de/2-zhylon-realtime-datenschutz-und-kontrolle-in-echtzeit-events" />
            <id>https://blog.maxham.de/2</id>
            <author>
                <name><![CDATA[Toby Maxham]]></name>
                <email><![CDATA[blog@maxham.de]]></email>

            </author>
            <summary type="html">
                <![CDATA[<p>Mit <strong><a href="https://realtime.zhylon.net/">Zhylon Realtime</a></strong> entsteht aktuell ein neuer Baustein im Zhylon-Ökosystem:<br />
ein moderner Realtime-Service für WebSocket-Events, vollständig kompatibel mit <a href="https://laravel.com/docs/broadcasting">Laravel Broadcasting</a> – <strong>aber datenschutzkonform, transparent und in europäischer Infrastruktur betrieben</strong>.</p>
<p>Der Fokus liegt dabei bewusst nicht nur auf Technik, sondern auf <strong>Kontrolle, Klarheit und Datenschutz</strong>.</p>
<h2 id="datenschutz-von-anfang-an-mitgedacht">Datenschutz von Anfang an mitgedacht</h2>
<p>Realtime-Events enthalten oft sensible Informationen: Nutzeraktivität, Anwesenheitsdaten oder interne Systemzustände.<br />
Zhylon Realtime läuft vollständig innerhalb meiner eigenen Infrastruktur – <strong>keine US-Cloud, keine Drittanbieter, keine unklaren Datenflüsse</strong>.</p>
<p>In Kombination mit <strong>EUStorage.eu</strong> bleiben Logs, Metriken und optionale Persistenz <strong>ausschließlich in Europa</strong>.<br />
Datenschutz ist hier kein Feature, sondern die Grundlage.</p>
<h2 id="teil-eines-geschlossenen-okosystems">Teil eines geschlossenen Ökosystems</h2>
<p>Zhylon Realtime ist kein isoliertes Tool, sondern ein integrierter Teil des Zhylon-Ökosystems:</p>
<ul>
<li>zentrale Verwaltung</li>
<li>klare App-Trennung</li>
<li>transparentes Controlling</li>
<li>keine Blackbox-Abrechnung</li>
</ul>
<p>Das reduziert Komplexität und macht den Betrieb planbar – gerade für Laravel-basierte Projekte.</p>
<h2 id="mehr-details-auf-patreon">Mehr Details auf Patreon</h2>
<p>Auf Patreon gehe ich deutlich tiefer:</p>
<ul>
<li>technische Hintergründe</li>
<li>Architektur-Entscheidungen</li>
<li>Datenschutz-Überlegungen</li>
<li>Roadmap &amp; nächste Schritte</li>
</ul>
<p>Wenn du sehen willst, <strong>warum und wie Zhylon Realtime entsteht</strong>, findest du dort den vollständigen Beitrag:</p>
<p>? <strong><a href="https://www.patreon.com/posts/zhylon-realtime-145936569?utm_medium=clipboard_copy&amp;utm_source=copyLink&amp;utm_campaign=postshare_creator&amp;utm_content=join_link">Zum ausführlichen Beitrag auf Patreon</a></strong></p>
]]>
            </summary>
                                    <updated>2025-12-15T23:35:32+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[★ Meine Projekte 2024: Fortschritte trotz Zeitmangel]]></title>
            <link rel="alternate" href="https://blog.maxham.de/4-meine-projekte-2024-fortschritte-trotz-zeitmangel" />
            <id>https://blog.maxham.de/4</id>
            <author>
                <name><![CDATA[Toby Maxham]]></name>
                <email><![CDATA[blog@maxham.de]]></email>

            </author>
            <summary type="html">
                <![CDATA[<p>Manchmal läuft das Leben nicht nach Plan – und genau das habe ich dieses Jahr deutlich zu spüren bekommen. Ursprünglich wollte ich 2024 nutzen, um berufliche und private Ziele voranzutreiben. Stattdessen wurde es ein Jahr, das mich in vielerlei Hinsicht an meine Grenzen gebracht hat. Trotzdem möchte ich zurückblicken, denn auch in schwierigen Zeiten gibt es Fortschritte, die zählen.</p>
<h2 id="berufliche-erfolge-trotz-hoher-belastung">Berufliche Erfolge trotz hoher Belastung</h2>
<p>Beruflich war dieses Jahr ein Ausnahmejahr. Eines der spannendsten Projekte war zweifellos die Umsetzung von gleich zwei großen Meilensteinen mit unserer Verbandssoftware. Nach über einem Jahrzehnt Mitarbeit an diesem System ist es immer wieder beeindruckend zu sehen, wie es wächst und sich weiterentwickelt.</p>
<p>Ein Highlight dieses Jahres war der erfolgreiche Einsatz unserer <a href="https://www.it4sport.de/">Verbandssoftware</a> in einem besonders großen Projekt – ein echter Meilenstein, der zeigt, wie weit die Software inzwischen gereift ist. Kurz darauf konnten wir einen weitere Kunden aus dem Sportbereich für unsere Lösung gewinnen. Diese Erfolge bestätigen, dass sich die vielen investierten Stunden und die harte Arbeit auszahlen.<br />
Hier auch nochmal die News aus dem letzten Jahr. <a href="https://tricept.de/news-stories/detail/news/it4sport-blickt-auf-ein-erfolgreiches-jahr-zurueck-1">Klick hier (News von Tricept.de 20.12.23)</a></p>
<p>Doch sie hatten auch ihren Preis: Viele Überstunden und die intensive Arbeit an diesen Projekten führten dazu, dass private Projekte in den Hintergrund rücken mussten. Es war nicht immer einfach, diese Balance zu finden, aber ich bin dennoch dankbar, Teil eines Teams zu sein, das solche Herausforderungen gemeinsam meistert.</p>
<h2 id="private-herausforderungen-ein-jahr-des-umbruchs">Private Herausforderungen: Ein Jahr des Umbruchs</h2>
<p>Parallel dazu war auch das Privatleben alles andere als ruhig. Ein erneuter Umzug brachte uns nicht nur in eine neue Umgebung, sondern auch einen deutlich längeren Schulweg für meine Kinder. Jeden Tag verbringe ich mehrere Stunden damit, sie hin und her zu fahren. Dieser Umstand beansprucht viel Zeit und Energie, die ich sonst in private Projekte hätte stecken können.</p>
<p>Zum Glück ist dieser Zustand nur vorübergehend – spätestens mit dem Ende des Schuljahres 2024/25 wird sich das wieder ändern. Doch aktuell bedeutet es, dass meine Kapazitäten stark begrenzt sind und persönliche Ziele warten müssen.</p>
<hr />
<h2 id="fortschritte-trotz-begrenzter-zeit-meine-projekte-2024">Fortschritte trotz begrenzter Zeit: Meine Projekte 2024</h2>
<p>Trotz der vielen Herausforderungen in diesem Jahr gab es auch Lichtblicke bei meinen privaten Projekten. Obwohl ich weit weniger Zeit investieren konnte, als ursprünglich geplant, haben einige Projekte dennoch Fortschritte gemacht, die mich stolz machen.</p>
<h3 id="strongsitealarm-fortschritte-im-website-monitoringstrong"><strong>Sitealarm: Fortschritte im Website Monitoring</strong></h3>
<p><a href="https://sitealarm.de/">Sitealarm</a>, mein Website-Monitoring-Tool, war eines der Projekte, bei dem ich ursprünglich mit großen Plänen in das Jahr gestartet bin. Geplant war die Umstellung auf eine neue Version Anfang 2024 – ein Ziel, das ich leider verschieben musste.</p>
<p>Stattdessen habe ich mich intensiv auf die Optimierung der Synchronisation zwischen Sitealarm und den Zhylon Services konzentriert. Der wichtigste Fortschritt: Jeder Server und jede Website wird jetzt automatisch mit einem Monitor versehen, sodass keine zusätzlichen Schritte mehr notwendig sind. Diese Automatisierung spart Zeit und erleichtert die Nutzung enorm.</p>
<p>Zusätzlich ist die geplante <em>&quot;App-Health&quot;-Funktion</em> schon fast abgeschlossen. Damit wird es Ende 2024 oder Anfang 2025 endlich möglich sein, die Umstellung zur neuesten Version anzugehen.<br />
Darüber hinaus habe ich die <a href="https://docs.sitealarm.de/">Dokumentation</a> umfassend überarbeitet. Dadurch werden viele Funktionen, die bislang im Verborgenen blieben, nun klarer sichtbar und leichter nutzbar.</p>
<blockquote>
<p>Fun Fact: „Wir“ heißt in diesem Fall eigentlich nur <em>ich</em>. Aber dazu später mehr.</p>
</blockquote>
<h3 id="strongzhylon-das-ecosystem-wachststrong"><strong>Zhylon: Das Ecosystem wächst</strong></h3>
<p>Auch <a href="https://zhylon.net/">Zhylon</a>, mein vermutlich gößtes Software-Ecosystem, konnte dieses Jahr wichtige Fortschritte machen. Hier haben wir die Funktionalität auf mehreren Ebenen erweitert:</p>
<ul>
<li><strong>Projektmanagement</strong>: Es ist nun möglich, pro Projekt einzelne Server und Websites anzulegen. Das erlaubt die Verwaltung verschiedener Umgebungen, die auf unterschiedlichen Branches arbeiten – alles in einer zentralen Oberfläche.</li>
<li><strong>Verbesserte CLI</strong>: Die Command-Line-Integration von Zhylon wurde optimiert. Jetzt lassen sich lokale Projekte direkt über die CLI steuern: <em>Hooks ausführen, neue Versionen deployen, Logs abrufen</em> – alles nahtlos und effizient.</li>
<li><strong>Neuer Mailserver</strong>: Ein weiteres Highlight ist die Einführung eines eigenen Mailservers, der perfekt in das Zhylon-Ecosystem integriert ist. Dieser Punkt verdient eigentlich einen eigenen Blogpost, den ich bald nachreichen werde.</li>
<li><strong>Domains und Server Management</strong>: Komplett neu ist das System zur Verwaltung von Domains und Servern, die automatisch in Zhylon integriert werden. Diese Erweiterung macht das Ecosystem noch leistungsfähiger und anwenderfreundlicher.</li>
</ul>
<h3 id="strongdas-community-projekt-idzhylonnetstrong"><strong>Das Community-Projekt: ID.zhylon.net</strong></h3>
<p>Ein weiterer Meilenstein ist die Weiterentwicklung von Zhylon als Community-Projekt. Unter <a href="https://id.zhylon.net">ID.zhylon.net</a> haben alle Nutzer jetzt die Möglichkeit, das Projekt aktiv zu unterstützen – sei es über Plattformen wie Patreon, GitHub Sponsors, Ko-Fi oder einmalige Spenden.</p>
<p>Diese Unterstützung ist essenziell, um die Entwicklung langfristig voranzutreiben und neue Features zu ermöglichen. Mit einem stärkeren Fokus auf die Community erhoffe ich mir, dass wir gemeinsam in den nächsten Jahren noch mehr erreichen können.</p>
<hr />
<h2 id="ein-blick-nach-vorn">Ein Blick nach vorn</h2>
<p>2024 war ein Jahr voller Herausforderungen – beruflich wie privat. Es gab Rückschläge, Verzögerungen und viele Momente, in denen ich an meine Grenzen gestoßen bin. Aber wenn ich jetzt zurückblicke, sehe ich nicht nur die Schwierigkeiten, sondern auch die Erfolge, die ich trotz allem erreicht habe.</p>
<p>Besonders stolz bin ich auf die Fortschritte bei Sitealarm und Zhylon. Diese Projekte zeigen mir, dass selbst kleine Schritte etwas Großes bewirken können, wenn man dranbleibt. Sie sind ein Beweis dafür, dass auch in schwierigen Zeiten etwas vorangehen kann – und das motiviert mich für die Zukunft.</p>
<h3 id="was-kommt-2025">Was kommt 2025?</h3>
<p>Im kommenden Jahr möchte ich an diesen Projekten weiterarbeiten und einige der geplanten Meilensteine endlich umsetzen. Dazu gehört die Umstellung von Sitealarm auf die neue Version und die Erweiterung des Zhylon-Ecosystems. Aber vor allem möchte ich versuchen, eine bessere Balance zwischen Arbeit, Projekten und meiner privaten Zeit zu finden.</p>
<p>Natürlich werde ich in den kommenden Monaten auch weiter über diese Themen schreiben. In den nächsten Blogeinträgen möchte ich tiefer in die einzelnen Projekte eintauchen – von der Entwicklung des Mailservers bis hin zu den neuen Features von Sitealarm und Zhylon. Wenn dich also die technischen Details oder die Herausforderungen hinter den Kulissen interessieren, bleib dran!</p>
<p>Es wird nicht immer einfach sein, und ich weiß, dass auch 2025 neue Herausforderungen bringen wird. Doch eines habe ich dieses Jahr gelernt: Es ist okay, wenn nicht immer alles nach Plan läuft – wichtig ist, dass man trotzdem weitermacht.</p>
<p>Vielen Dank, dass du diesen Rückblick gelesen hast. Wenn du Lust hast, meine Projekte zu unterstützen oder einfach mehr darüber zu erfahren, schau gerne bei <a href="https://id.zhylon.net">ID.zhylon.net</a> vorbei. Zusammen können wir etwas Großartiges schaffen.</p>
]]>
            </summary>
                                    <updated>2024-11-26T22:45:00+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[★ Rückblick auf ein ereignisreiches Jahr 2021]]></title>
            <link rel="alternate" href="https://blog.maxham.de/10-ruckblick-auf-ein-ereignisreiches-jahr-2021" />
            <id>https://blog.maxham.de/10</id>
            <author>
                <name><![CDATA[Toby Maxham]]></name>
                <email><![CDATA[blog@maxham.de]]></email>

            </author>
            <summary type="html">
                <![CDATA[<p>Es ist eigentlich jedes Jahr das gleiche. Der Dezember beginnt, mein Geburtstag naht und ich wundere mich jedes Mal darüber, wie schnell das Jahr wieder vergangen ist. In diesem Jahr habe ich die letzten Wochen etwas mehr Urlaub als sonst und kann das Jahr ganz in Ruhe mit der Familie ausklingen lassen. Zeit auch dafür, das Jahr noch einmal rückblickend zu bewerten und Ziele für das nächste Jahr zu setzen (<a href="https://blog.maxham.de/?p=438">könnt ihr hier nachlesen</a>).</p>
<p>Auch dieses Jahr war wieder geprägt durch die noch anhaltende Corona Pandemie. Das habe ich selbst vor allem dadurch gespürt, dass sich meine privaten Projekte deutlich langsamer entwickelt haben, als ich ursprünglich wollte. Nicht nur durch die fehlenden engen Gespräche mit Freunden, auch das erhöhte Home-Office und mehr Zeit mit der Familie hatten darauf Auswirkungen. Nun muss ich aber sagen, dass dies ja nichts schlechtes ist. Mehr Zeit mit der Familie verbringen zu können ist wahrlich etwas schönes und ich genieße jede Minute, die ich mit ihnen verbringen kann. Auch das Home-Office bringt viele Vorteile mit sich. Es fallen gut zwei Stunden Fahrtzeit weg und auch die Spritkosten wirken sich positiv auf die Umwelt und den Geldbeutel aus.</p>
<p>Ich sehe es ein wenig wie eine inspirierende Auszeit an, um neue Ideen für neue und bestehende Projekte zu sammeln. Davon war das Jahr auch geprägt. Ich habe über 200 Stunden Tutorials bei <a href="https://laracasts.com/@TobyMaxham">Laracasts</a> und auf YouTube angesehen. Viele neue Technologien ausprobiert, z.B. PHP 8.0 und 8.1, <a href="https://tailwindcss.com/">Tailwind CSS</a> oder <a href="https://laravel-livewire.com/">Laravel Livewire</a>. Ich habe viel mit GitHub Actions experimentiert und meine DevOps Skills erweitert. Kurzum, ich habe viel Erfahrung gesammelt aber relativ wenig Projekte umgesetzt.</p>
<h2 id="strongprojekt-ux9-url-shortenerstrong"><strong>Projekt UX9 URL Shortener</strong></h2>
<p>Hier gab es wohl die größten Veränderungen. Gegen Ende des Jahres habe ich die Anwendung überarbeitet und auf Laravel 8 umgebaut. Außerdem für PHP 8.0 bzw. PHP 8.1 vorbereitet. Zudem gibt es nun für alle Klassen Unit Tests wodurch ich eine Code Coverage von über 90% erreichen konnte. <a href="https://ux9.de/">https://ux9.de/</a></p>
<h2 id="strongprojekt-zhylon-und-deployerstrong"><strong>Projekt Zhylon und Deployer</strong></h2>
<p>Danke vor allem an meinen guten Freund Norbert, der hier nun viel Entwicklungsarbeit leistet. Zusammen konnten wir einige Updates einspielen was das Server Deployment nun deutlich erleichtert. Es gibt nun auch eine Version für kleine Teams und einen besseren Server Monitor. Zuletzt habe ich noch den OAuth2 Server aktiviert, wodurch ich neben MX-Codes nun auch Zhylon als Login verwenden kann. Gerne kann jeder sich beteiligen oder Beta Tester werden. Das Projekt wird noch einige Zeit brauchen, bis es komplett öffentlich werden kann. <a href="https://zhylon.de/">https://zhylon.de/</a></p>
<h2 id="strongprojekt-managementstrong"><strong>Projekt Management</strong></h2>
<p>Dieses Projekt hat vor etwa einem Jahr begonnen, da ich mit der Umstellung auf MacOS das von meinem Betrieb bereitgestellte <a href="https://tricept.de/referenzen/details/reference/modernisierung-einer-proprietaeren-zeiterfassungs-und-abrechnungsloesung">Zeit-Buchungs-Tool</a> nicht mehr nutzen konnte. Um mir das Buchen meiner Arbeitszeit etwas einfacher zu machen, habe ich ein altes Projekt wieder zum Leben erweckt und um einige neue Features erweitert. Norbert und Heiko konnte ich auch davon begeistern, sodass es nun regelmäßig mit großen und kleinen Updates ausgeschmückt wird. Nachdem wir bisher kein Namen für das Projekt finden konnten, haben wir nun endlich eine Domain gefunden und bestellt. Somit ist das Projekt nun ganz offiziell nutzbar <a href="https://pro%C4%B5ect.de/">https://proĵect.de/</a>. Der Basiscode soll demnächst Open Source werden, sodass vielleicht eine Community entstehen könnte um noch mehr Features zu bekommen.</p>
<p>Wie ihr gelesen habt, bin ich mit dem ganzen Jahr eigentlich sehr zufrieden. Ich bin auch sehr froh darüber, dass mich die Pandemie nur am Rande betroffen hat und ich kaum größere Einschnitte dadurch gespürt habe. Ich hoffe auch das kommende Jahr wird wieder ein gutes und erfolgreiches Jahr.</p>
<p><strong>Euch allen wünsche ich auf jeden Fall ein erfolgreiches, glückliches und gesundes neues Jahr.</strong></p>
<figure class="wp-block-image size-large">
  <img src="https://blog.maxham.de/admin-uploads/wp-uploads/2021/12/px-downloadge5edb811be9300bd160b6a8385c30040df137aec9c200353f33890d97438a5b7eac7f62e5d0582d9fdab1edb9fd42baf3f161ff22fcb7a0aad1bac21c5533d3f_19209161231299103037186-1024x576.jpg" alt="Download Beispielbild">
</figure>
]]>
            </summary>
                                    <updated>2021-12-30T17:34:24+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[★ UX9 URL Shortener: Upgrade auf Laravel 8 - Teil 1]]></title>
            <link rel="alternate" href="https://blog.maxham.de/7-ux9-url-shortener-upgrade-auf-laravel-8-teil-1" />
            <id>https://blog.maxham.de/7</id>
            <author>
                <name><![CDATA[Toby Maxham]]></name>
                <email><![CDATA[blog@maxham.de]]></email>

            </author>
            <summary type="html">
                <![CDATA[<p>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: <a href="https://ux9.de">https://ux9.de</a></p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
]]>
            </summary>
                                    <updated>2021-11-06T12:21:29+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[★ Composer 2.0 ist erschienen]]></title>
            <link rel="alternate" href="https://blog.maxham.de/13-composer-20-ist-erschienen" />
            <id>https://blog.maxham.de/13</id>
            <author>
                <name><![CDATA[Toby Maxham]]></name>
                <email><![CDATA[blog@maxham.de]]></email>

            </author>
            <summary type="html">
                <![CDATA[<p>Endlich ist es soweit. Eine neue Major Version von Composer, dem Paket Manager von PHP, ist erschienen.</p>
<p>Was ihr außer einer erheblichen Performance Verbesserung noch alles erwarten könnt, gibt es auf dem offiziellen Blog von <a href="https://blog.packagist.com">Packagist</a> nachzulesen.</p>
<p><a href="https://blog.packagist.com/composer-2-0-is-now-available/">https://blog.packagist.com/composer-2-0-is-now-available/</a></p>
]]>
            </summary>
                                    <updated>2020-10-25T13:58:29+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[★ Was gibt es neues in PHP 8]]></title>
            <link rel="alternate" href="https://blog.maxham.de/12-was-gibt-es-neues-in-php-8" />
            <id>https://blog.maxham.de/12</id>
            <author>
                <name><![CDATA[Toby Maxham]]></name>
                <email><![CDATA[blog@maxham.de]]></email>

            </author>
            <summary type="html">
                <![CDATA[<p>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 <a href="https://stitcher.io/blog/new-in-php-8">Blogbeitrag</a> von <a href="https://twitter.com/brendt_gd">Brent (@brendt_gd)</a> nachlesen. Hier ein kurzer Überblick: - Union types</p>
<ul>
<li>Just in time compiler (JIT)</li>
<li>Attributes (or Annotations)</li>
<li>Constructor property promotion</li>
</ul>
<p>static and mixed return type
throw expression
Trailing comma in parameter list
Das war allerdings nur ein kleiner Auszug von allen neuen Features.</p>
]]>
            </summary>
                                    <updated>2020-06-13T15:10:39+02:00</updated>
        </entry>
            <entry>
            <title><![CDATA[★ Laracon: Übersicht Laravel 5.3]]></title>
            <link rel="alternate" href="https://blog.maxham.de/14-laracon-ubersicht-laravel-53" />
            <id>https://blog.maxham.de/14</id>
            <author>
                <name><![CDATA[Toby Maxham]]></name>
                <email><![CDATA[blog@maxham.de]]></email>

            </author>
            <summary type="html">
                <![CDATA[<p>Gestern hat <a href="http://taylorotwell.com/">Taylor Otwell</a> auf der <a href="http://laracon.us/">LaraconUS</a> einige neue Features von Laravel 5.3 präsentiert. Die Präsentation beinhaltete die vier Hauptpunkte: Laravel Scout, Laravel Passport, Laravel Mailable und Laravel Notifications. Hier nun ein grober Überblick, was man damit alles machen kann. ### Laravel Scout</p>
<p>Laravel Scout ist eine Treiber basierende Volltextsuche für <a href="https://laravel.com/docs/eloquent">Eloquent</a>. <a href="https://www.algolia.com/">Algolia</a> wird bereits bei der Auslieferung unterstützt. Da es jedoch Treiber basierend ist, können und werden noch andere Volltextsuch-Systeme integriert. Da wird es in der nächsten Zeit in der Community viele Vorschläge geben. <strong>Scout</strong> kann leicht über einen „<span style="text-decoration: underline;">Searchable</span>“-Trait in die bestehenden Models eingebaut werden. Anschließend müssen die Daten nur noch über einen Service synchronisiert werden. Dies könnte z.B. so aussehen: ```
php artisan scout:import App\Post</p>
<pre data-lang="txt" class="notranslate">
Dann kann danach gesucht werden: ```
Post::search('Alice')-&gt;get();
</pre>
<p>Auch das Paginieren ist möglich: ```
Post::search('Alice')-&gt;paginate();</p>
<pre data-lang="txt" class="notranslate">
Genauso wie einfache WHERE-Bedingungen: ```
Post::search(‘Alice’)—&gt;where('acount_id', '&gt;', 1)-&gt;paginate();
</pre>
<h3 id="laravel-mailable">Laravel Mailable</h3>
<p>Laravel Mailable ist eine neue Mail-Klasse, die das Verenden von E-Mails deutlich verbessert. Das ganze schaut nun viel mehr nach Laravel aus, als die bisherige Vorgehensweise mit der Closure-Funktion. ```
Mail::to('laravel@example.com')-&gt;send(new OrderComplete);</p>
<pre data-lang="txt" class="notranslate">
Es sind alle Mail-Features weiterhin verfügbar: ```
Mail::to('laravel@example.com')-&gt;cc('john@example.com')-&gt;queue(new OrderComplete);
</pre>
<h3 id="laravel-notifications">Laravel Notifications</h3>
<p>Laravel Notifications erlaubt es uns, Updates über Services wie <a href="https://api.slack.com/">Slack</a>, SMS oder E-Mail zu machen. Notifications werden bereits mit einem „responsive transactional“ E-Mail Template ausgeliefert. In der eigentlichen Klasse muss dann nur noch folgendes aufgerufen werden: ```
$this-&gt;line('Thank you for joining')
    -&gt;action('Button Text', 'http://url.com')
    -&gt;line('If you have any questions please hit reply')
    -&gt;success();</p>
<pre data-lang="txt" class="notranslate">
</pre>
<p>$this-&gt;line('Sorry we had a problem with your order')
    -&gt;action('Button Text', 'http://url.com')
    -&gt;error();</p>
<pre data-lang="txt" class="notranslate">
### Laravel Passport

Laravel Passport ist ein optionales Packages das einen vollständigen OAuth2 Server bereitstellen kann. Man kann damit z.B. Token generieren oder zurücknehmen. Diese Features werden alle noch bis zum Release Dokumentiert. Allerdings wird es bis dahin doch noch ein paar Wochen dauern. Vielleicht ja zur LaraconEU?
</pre>
]]>
            </summary>
                                    <updated>2016-07-28T19:42:25+02:00</updated>
        </entry>
            <entry>
            <title><![CDATA[★ PHP Stories: Letztes Array Element]]></title>
            <link rel="alternate" href="https://blog.maxham.de/15-php-stories-letztes-array-element" />
            <id>https://blog.maxham.de/15</id>
            <author>
                <name><![CDATA[Toby Maxham]]></name>
                <email><![CDATA[blog@maxham.de]]></email>

            </author>
            <summary type="html">
                <![CDATA[<p>Heute zeige ich euch, wie man mit einem kleinen Trick das letzte Element eines Arrays herausfindet. Dabei finde ich diese Vorgehensweise besser gelöst als mit einem <strong>count()</strong>.</p>
<p>Hier nun das Beispiel:</p>
<pre data-lang="php" class="notranslate"><span class="hl-keyword">&lt;?php</span> <span class="hl-comment">// lastArrayExample.php</span>
<span class="hl-variable">$array</span> = <span class="hl-property">array</span>(<span class="hl-value">'Toby'</span>, <span class="hl-value">'John'</span>, <span class="hl-value">'Leo'</span>, <span class="hl-value">'John'</span>);

<span class="hl-comment">// Pointer an das Ende des Arrays setzten</span>
<span class="hl-property">end</span>(<span class="hl-variable">$array</span>);

<span class="hl-comment">// Den Key des Elements holen</span>
<span class="hl-variable">$lastKey</span> = <span class="hl-property">key</span>(<span class="hl-variable">$array</span>);

<span class="hl-keyword">foreach</span>(<span class="hl-variable">$array</span> <span class="hl-keyword">as</span> <span class="hl-variable">$k</span> =&gt; <span class="hl-variable">$v</span>) {
    <span class="hl-keyword">if</span>(<span class="hl-variable">$k</span> == <span class="hl-variable">$lastKey</span>) {
         <span class="hl-keyword">echo</span> <span class="hl-variable">$v</span> . <span class="hl-value">' ist der letzte!'</span>;
    } <span class="hl-keyword">else</span>
	<span class="hl-keyword">echo</span> <span class="hl-variable">$v</span> . <span class="hl-value">'&lt;br /&gt;'</span>;
}
<span class="hl-comment">// Ausgabe: Toby&lt;br /&gt;John&lt;br /&gt;Leo&lt;br /&gt;John ist der letzte!</span>
</pre>
]]>
            </summary>
                                    <updated>2016-01-22T03:26:03+01:00</updated>
        </entry>
    </feed>
