---
title: "PHP architecture"
manual: "TYPO3 Explained"
version: "11.5"
permalink: "https://docs.typo3.org/permalink/t3coreapi:cgl-php-architecture@11.5"
source: "CodingGuidelines/PhpArchitecture/Index.rst"
rendered: "2026-10-21T15:30:00+00:00"
---

> [!WARNING]
> **Attention**
>
> TYPO3 v11 has reached end-of-life as of October 31th 2024 and
> is no longer being maintained. Use the version switcher on the top
> left of this page to select documentation for a supported version of TYPO3.
>
> Need more time before upgrading?
> You can purchase Extended Long Term Support (ELTS) for TYPO3 v11 here:
> [TYPO3 ELTS](https://typo3.com/services/extended-support-elts).

<a id="cgl-modeling-cross-cutting-concerns"></a>

# PHP architecture {#cgl-php-architecture}

This chapter aims to give developers some ideas and practices at hand
when PHP architectural decisions have to be taken. Result should be a
understanding of some thoughts behind and a harmonization of solutions
found in the TYPO3 Core and maybe in third-party extensions. It
should help reviewers to evaluate solutions and how they stick to the
main code separation principles the Core tries to follow. The document
should help developers to train their architectural skills and to rate
easier which pattern matches a given problem to improve code quality
and exchangeability.

These following sections also address cross-cutting concerns, which are
problems that have to be solved at multiple, distinct places within the
system that have no further connection to each other. It is a cross-class
hierarchy and maybe cross-extension problem that can and should not
be solved with class abstractions.

-   [Services](https://docs.typo3.org/permalink/t3coreapi:services@11.5)
-   [Static Methods, static Classes, Utility Classes](https://docs.typo3.org/permalink/t3coreapi:static-methods-static-classes-utility-classes@11.5)
-   [Traits](https://docs.typo3.org/permalink/t3coreapi:traits@11.5)
-   [Working with exceptions](https://docs.typo3.org/permalink/t3coreapi:working-with-exceptions@11.5)
