PHP / Magento Dev Blog

  • Publikacje
  • O autorze
  • Kontakt

Checkout customisation – custom fields, JS mixin, step, save to Order

  • 0
Henryk Tews
Tuesday, 12 December 2023 / Published in Magento 2

Customising the Magento 2 checkout is one of the most requested – and most feared – development tasks. The checkout is a JavaScript-heavy single-page application built on Knockout.js and RequireJS. Adding custom fields, new steps, or modifying the order of existing ones requires understanding the JS architecture alongside the PHP backend. I show a complete example: custom delivery note field from frontend to Order.

(more…)

PHP 8.3 after release – typed constants, json_validate(), clone with in practice

  • 0
Henryk Tews
Tuesday, 28 November 2023 / Published in PHP

PHP 8.3 was officially released on 23 November 2023. After a few weeks of real use, the features that seemed minor on paper turn out to be genuinely useful in everyday code. Typed class constants stop silent type errors in constant definitions. json_validate() replaces decode-and-discard. The readonly amendment makes value object cloning finally ergonomic. I show all three in production scenarios.

(more…)

WooCommerce vs Magento 2 – architecture, hooks vs DI, when to choose which

  • 0
Henryk Tews
Tuesday, 10 October 2023 / Published in PHP

WooCommerce and Magento 2 are both serious e-commerce platforms, but they target fundamentally different use cases and developer profiles. After years of working primarily in Magento 2 I have done several WooCommerce projects. The architecture differences are real and the choice matters. I compare both platforms where it counts for a developer making the decision.

(more…)

GraphQL Federation – subgraphs, gateway, Apollo Router, Magento 2 integration

  • 0
Henryk Tews
Tuesday, 12 September 2023 / Published in PHP

GraphQL Federation allows splitting a monolithic GraphQL schema into separate subgraphs maintained by different teams or services. Each service owns its part of the schema; the gateway stitches them together transparently for the client. This architecture fits e-commerce well: products, inventory, pricing, and orders as independent services with a unified API layer.

(more…)

Dijkstra – shortest path with weights, SplMinHeap, e-commerce applications

  • 0
Henryk Tews
Tuesday, 08 August 2023 / Published in Algorytmy, PHP

Dijkstra’s algorithm finds the shortest path in a weighted graph – the generalisation of BFS for graphs where edges have costs. It is the foundation of GPS navigation, network routing, and in e-commerce it appears in warehouse routing, delivery zone assignment, and shipping cost calculations. I implement it in PHP with SplMinHeap and show practical applications.

(more…)

PageBuilder – custom content type, XML config, JS preview, frontend rendering

  • 0
Henryk Tews
Tuesday, 11 July 2023 / Published in Magento 2

PageBuilder is Magento 2’s drag-and-drop content editor that replaced the plain HTML textarea in admin. A custom content type lets merchants create complex layouts without HTML knowledge while giving developers full control over the output. I show the complete implementation: XML configuration, JavaScript preview in admin, and frontend rendering.

(more…)

State pattern – order state machine, serialisation, comparison with Strategy

  • 0
Henryk Tews
Tuesday, 13 June 2023 / Published in Wzorce projektowe

State is a behavioural pattern that allows an object to change its behaviour when its internal state changes. It looks like the object changed its class. The classic example is an order state machine – an order in “pending” status behaves differently from one in “processing”. I show an implementation in PHP and compare it with Strategy, which it superficially resembles.

(more…)

PHP 8.3 preview – typed constants, json_validate(), array_find(), clone with

  • 0
Henryk Tews
Tuesday, 09 May 2023 / Published in PHP

PHP 8.3 is due in November 2023 and while it is a conservative release compared to 8.0-8.2, it adds several things worth knowing about before they arrive. Typed class constants close an inconsistency in the type system. json_validate() saves a decode-and-discard pattern. array_find() and array_find_key() replace clunky array_filter() idioms. The readonly amendment allows re-initialisation in cloning.

(more…)

Drupal 10 – Entity Types, hooks, DI, headless via JSON:API, comparison with WP and Magento

  • 0
Henryk Tews
Tuesday, 11 April 2023 / Published in PHP

Drupal 10 is a significantly more modern platform than its reputation suggests. The rewrite to Symfony components, a proper DI container, and a composer-first approach happened years ago. Drupal 10 adds PHP 8.1+ requirements, drops old dependencies, and has CKEditor 5 and Olivero as defaults. I show Drupal 10 through the lens of a PHP developer familiar with Magento 2 and Symfony.

(more…)

Laravel vs Symfony – DI, Doctrine vs Eloquent, when to choose which

  • 0
Henryk Tews
Tuesday, 14 March 2023 / Published in Laravel, PHP, Symfony

Laravel and Symfony are the two dominant PHP frameworks, and choosing between them is a real decision in every new project. They share a Symfony core (Laravel uses several Symfony components) but have fundamentally different philosophies: Symfony favours explicitness and flexibility, Laravel favours convention and developer ergonomics. I compare them where it matters most for a PHP developer making an architecture choice.

(more…)

  • 5
  • 6
  • 7
  • 8
  • 9

© 2026 Created by

TOP
Zarządzaj zgodą
Aby zapewnić jak najlepsze wrażenia, korzystamy z technologii, takich jak pliki cookie, do przechowywania i/lub uzyskiwania dostępu do informacji o urządzeniu. Zgoda na te technologie pozwoli nam przetwarzać dane, takie jak zachowanie podczas przeglądania lub unikalne identyfikatory na tej stronie. Brak wyrażenia zgody lub wycofanie zgody może niekorzystnie wpłynąć na niektóre cechy i funkcje.
Funkcjonalne Always active
Przechowywanie lub dostęp do danych technicznych jest ściśle konieczny do uzasadnionego celu umożliwienia korzystania z konkretnej usługi wyraźnie żądanej przez subskrybenta lub użytkownika, lub wyłącznie w celu przeprowadzenia transmisji komunikatu przez sieć łączności elektronicznej.
Preferencje
Przechowywanie lub dostęp techniczny jest niezbędny do uzasadnionego celu przechowywania preferencji, o które nie prosi subskrybent lub użytkownik.
Statystyka
Przechowywanie techniczne lub dostęp, który jest używany wyłącznie do celów statystycznych. Przechowywanie techniczne lub dostęp, który jest używany wyłącznie do anonimowych celów statystycznych. Bez wezwania do sądu, dobrowolnego podporządkowania się dostawcy usług internetowych lub dodatkowych zapisów od strony trzeciej, informacje przechowywane lub pobierane wyłącznie w tym celu zwykle nie mogą być wykorzystywane do identyfikacji użytkownika.
Marketing
Przechowywanie lub dostęp techniczny jest wymagany do tworzenia profili użytkowników w celu wysyłania reklam lub śledzenia użytkownika na stronie internetowej lub na kilku stronach internetowych w podobnych celach marketingowych.
  • Manage options
  • Manage services
  • Manage {vendor_count} vendors
  • Read more about these purposes
Zobacz preferencje
  • {title}
  • {title}
  • {title}