Blog

Willkommen im Dev-Blog! Hier teile ich regelmäßig wertvolle Tipps, nützliche Tricks und hilfreiche Anleitungen aus dem Bereich des Webdesigns. Mit Fokus auf PHP, Laravel, Statamic und der allgemeinen Web-Entwicklung möchte ich dir dabei helfen, dein Wissen zu erweitern.

Neu in PHP 8.1: enums – ein konkretes Beispiel

Mit PHP 8.1 haben endlich Enumerations Einzug in die Sprache gehalten, kurz enums. Nachfolgend ein Beispiel, wie enum konkret verwendet werden kann. Vor PHP 8.1 musste man für ein ähnliches Verhalten auf Klassenvariablen zurückgreifen: class Status { public const IDLE = 1; public const RUNNING = 2; public const ERROR = 3; } Warum sollte man das tun? Folgendes Beispiel verdeutlicht dies. Angenommen wir haben einen Task. Welche Status gibt es neben idle? Ist idle überhaupt ein valider

Sebastian Widmann

Sebastian Widmann

Webdesigner / Web-Entwickler

Linux

php-fpm unter Ubuntu neustarten

Dieses Tutorial beschreibt, wie man php-fpm unter Ubuntu neu startet. Dies kann beispielsweise erforderlich sein, wenn man Opcode Caching aktiviert hat und ein Deployment durchgeführt hat. PHP-Version abfragen Im ersten Schritt muss die eingesetzte Version von PHP abgefragt werden: php -v Die Ausgabe sollte in etwa so aussehen: PHP 7.2.19-0ubuntu0.18.04.2 (cli) (built: Aug 12 2019 19:34:28) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologi

Sebastian Widmann

Sebastian Widmann

Webdesigner / Web-Entwickler

Google Chrome

Ungültige Zertifikate in Google Chrome akzeptieren

Chrome ist sehr streng geworden, was Zertifikate angeht. So gibt es auf „normalem“ Weg keine Möglichkeit mehr, eine Seite mit einem ungültigen Zertifikat aufzurufen. Stattdessen erhalte ich eine net::ERR_CERT_AUTHORITY_INVALID Fehlermeldung. Glücklicherweise gibt es eine Hintertüre. Um diese Hintertüre zu nutzen, muss man Chrome mit einem speziellen Kommandozeilenparameter aufrufen. Unter Windows ist das: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --ignore-certificat

Sebastian Widmann

Sebastian Widmann

Webdesigner / Web-Entwickler

Unterschied zwischen new self() und new static() in PHP

Was ist der Unterschied zwischen new self() und new static() in PHP? Oder ist es das Gleiche? Es ist nicht das Gleiche. self bezieht sich auf die Klasse, in der das new Keyword geschrieben steht. static hingegeben bezieht sich auf die Klasse in der Hierarchie, in der die Methode aufgerufen wurde. Folgendes Beispiel soll dies verdeutlichen: class Class_A { public static function get_self() { return new self(); } public static function get_static() { return new static(

Sebastian Widmann

Sebastian Widmann

Webdesigner / Web-Entwickler

macOS

Verzeichnis unter macOS zu PATH hinzufügen

Unter macOS ist die Stanrdard-Shell macOS. Gibt man einen Befehl in der Shell ein, dann schaut macOS zunächst im aktuellen Verzeichnis, ob es ein entsprechendes Programm oder Skript gibt. Wenn dort kein Programm oder Skript gefunden wird, dann wird im nächsten Schritt in allen Verzeichnissen geschaut, die sich in der PATH-Variable befinden. Nachfolgend wird beschrieben, wie man ein weiteres Verzeichnis zur PATH-Variable hinzugefügt wird. Dazu wird im Benutzerverzeichnis zunächst eine Datei .zshr

Sebastian Widmann

Sebastian Widmann

Webdesigner / Web-Entwickler

Werte einer PHP ENUM als Array abfragen

Um alle Werte einer PHP ENUM als Array abzufragen hilft folgende Zeile Code: $values = array_column(PageStatus::cases(), 'value'); In diesem Beispiel heißt die Enumeration PageStatus. Durch array_column werden alle Value-Werte als Array ausgegeben.

Sebastian Widmann

Sebastian Widmann

Webdesigner / Web-Entwickler

WordPress

WordPress SQL Queries debuggen

Es gibt verschiedene Wege, Probleme mit SQL-Statements innerhalb von WordPress zu untersuchen / debuggen. Die relevantesten Methoden habe ich nachfolgend aufgezeigt. Debugging aktivieren Im ersten Schritt muss der Debug Mode aktiviert werden. Dies kann über die nachfolgenden Einträge in der wp-config.php durchgeführt werden: define( 'WP_DEBUG', true ); // Debugging aktivieren define( 'WP_DEBUG_LOG', true ); // Debug-Informationen nach /wp-content/debug.log schreiben define( 'WP_DEBUG_DISPLAY', f

Sebastian Widmann

Sebastian Widmann

Webdesigner / Web-Entwickler

WordPress

WordPress SQL Queries loggen

Um die von WordPress durchgeführten Database Queries zu loggen, muss man zunächst SAVEQUERIES in der wp-config.php aktivieren. Dazu folgenden Eintrag hinzufügen: define( 'SAVEQUERIES', true ); Anschließend muss folgender Code zu einem Plugin oder in die functions.php des aktivierten Themes hinzugefügt werden: add_action( 'shutdown', function () { global $wpdb; $log_stack = true; $log_file = fopen( ABSPATH . '/wp-content/sql.log', 'a' ); fwrite( $log_file, PHP_EOL . PHP_EOL . &

Sebastian Widmann

Sebastian Widmann

Webdesigner / Web-Entwickler

IDE / Editor

Xdebug einrichten (Laravel Valet / PHP 7.4 / PHPStorm)

In diesem Tutorial wird beschrieben, wie Xdebug in Kombination mit Laravel Valet, PHP 7.4 und PHPStorm eingerichtet werden kann. Voraussetzung ist, dass Laravel Valet wie hier beschrieben installiert ist. Xdebug installieren Der erste Schritt besteht in der Vorbereitung von PECL: pecl channel-update pecl.php.net ; pecl clear-cache Nun kann Xdebug installiert werden: pecl install xdebug Anschließend muss Laravel Valet neu gestartet werden: valet restart Im nächsten Schritt wird geprüft, ob XDe

Sebastian Widmann

Sebastian Widmann

Webdesigner / Web-Entwickler

Lookahead und Lookbehind für reguläre Ausdrücke

Reguläre Ausdrücke sind ein außerordentlich nützliches Werkzeug zur Identifikation von Zeichenketten. Es gibt jedoch Situationen, in denen herkömmliche reguläre Ausdrücke nicht ausreichend sind. In diesen Fällen kommen 'Lookahead' und 'Lookbehind' zum Einsatz. Diese Konzepte werden im Folgenden näher erläutert und jeweils mit einem Beispiel veranschaulicht: Lookahead Der Ausdruck test folgt unmittelbar der aktuellen Position: (?=test) Lookbehind Der Ausdruck test steht unmittelbar vor der aktue

Sebastian Widmann

Sebastian Widmann

Webdesigner / Web-Entwickler