Back to skills

Experience

PHP experience

PHP is my primary working language. Since 2007, I have used it to build and evolve e-commerce, internal systems, APIs, and integration services.

  • PHP 5 → PHP 8.5+
  • Nette
  • Symfony
  • E-commerce
  • APIs and integrations

PHP has been a long-term foundation of my work.

I have worked with PHP since 2007. I started with a competition website in PHP 5 and gradually moved from custom websites and applications without a framework to larger e-commerce and internal systems.

Today, I use PHP mainly for backend logic, APIs, integrations, data, and the long-term development of products. Experience with several eras of PHP helps me design new system parts and modernise existing ones with care.

Progress over time

From custom code to maintainable architecture.

  1. PHP 5 · early days

    A competition website and custom solutions without a framework

    My first experience was a competition website in PHP 5. It was followed by custom websites and applications, where I learned hands-on work with databases, forms, administration, and operation. At first without a framework, then with the first libraries and packages that made repeated work faster.
  2. Architecture

    From Controller → Facade → Service to clearer boundaries

    I previously used the Controller → Facade → Service approach. It worked well for many tasks, but as systems grew more complex I moved towards architecture with more clearly separated domain logic, dependencies, and interfaces. That makes applications easier to test, change, and develop in a team.
  3. PHP 7 · 2016—2025

    Amiatex: a custom multistore e-commerce solution

    A core part of my work was co-creating the Amiatex platform. From one administration, it managed multiple stores, domains, language versions, and currencies, and included integrations with several marketplace platforms.
    View the Amiatex reference
  4. Nette · team development

    Sportisimo and an internal retail system

    At Sportisimo, I worked with Nette in a team developing an internal system for store employees. The PDA-based solution covered stock movement between goods receipt, the backroom, and the shop floor — experience that reinforced the importance of readable code and reliable operation.
    View the Sportisimo reference
  5. PHP 8 · today

    Symfony for current projects

    I build current projects with modern PHP and Symfony. I use the framework ecosystem, Doctrine, testing, and static analysis to create robust backends that can evolve over the long term.
    View the public Symfony importer

How my approach evolved

From procedural code to modular and clearly separated parts of a system.

As projects evolved, so did my way of working. From scripts built mostly around functions and a single monolithic project, I gradually moved towards object-oriented design, clearer code boundaries, and modularly structured applications. Depending on the scale and needs of a project, this may be a modular monolith or a standalone backend API.

I choose this degree of separation according to project complexity; for simple parts, I prefer a more direct solution.

Earlier

Functions, OOP, and a monolith

  1. Functions and procedural code
  2. Controller
  3. Facade
  4. Service
  5. Database and integrations

Today

Modular layers

  1. UI · HTTP controller, request, response
  2. Application · use cases
  3. Domain · rules and value objects
  4. Infrastructure · database, Redis, and external APIs

I use today

PHP stack for current projects

  • PHP 8.5+
  • Symfony 8.1
  • Doctrine
  • REST API
  • OpenAPI / Swagger
  • PostgreSQL
  • Redis
  • RabbitMQ
  • PHPUnit
  • PHPStan Max

Looking for an experienced PHP backend developer?

I can review the current state of your application, propose the next step, or take ownership of a specific part of the system.

Request a call

I will call you on the next working day between 9:00 and 17:00.

You can also call me directly.

+420 605 181 728

Leave your phone number and send a callback request.

By sending, you agree to processing your data in order to handle your request.