---
title: "Extending the TYPO3 Core"
manual: "TYPO3 Explained"
version: "11.5"
permalink: "https://docs.typo3.org/permalink/t3coreapi:hooks-concept@11.5"
source: "ApiOverview/Events/Concept/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).

# Extending the TYPO3 Core {#hooks-concept}

Events, Hooks and Signals provide an easy way to extend the functionality of the TYPO3 Core and
its extensions without blocking others to do the same.

[Events](https://docs.typo3.org/permalink/t3coreapi:eventdispatcherevents@11.5) are being emitted by the TYPO3 Core or an Extension via the
[EventDispatcher](https://docs.typo3.org/permalink/t3coreapi:eventdispatcher@11.5). The Event
will be received by all implemented Event Listeners for the Event in question. Events are strongly
typed. Events only allow changes to variables that are intended to be changed by the Event.

[Hooks](https://docs.typo3.org/permalink/t3coreapi:hooks-general@11.5) are basically places in the source code where a user function will be called for processing
if such has been configured.

Signals roughly follow the observer pattern.
[Signals and Slots](https://docs.typo3.org/permalink/t3coreapi:signals-slots@11.5) decouple the sender (sending a signal) and the receiver(s)
(called slots). The sender sends a signal - like "database updated" - and all
receivers listening to that signal will be executed.

## TYPO3 Extending Mechanisms Video {#hooks-video}

Lina Wolf: Extending Extensions @ TYPO3 Developer Days 2019

[Watch this video on YouTube](https://www.youtube.com/watch?v=HFO2d2QzTek)

## Events, Signals and Hooks vs. XCLASS Extensions {#hooks-xclass}

Events, Signals and Hooks are the recommended way of extending TYPO3 compared to
extending PHP classes with a child class (see [XCLASS extensions](https://docs.typo3.org/permalink/t3coreapi:xclasses@11.5)). Because
only one extension of a PHP class can exist at a time while hooks and signals
may allow many different user-designed processor functions to be executed.
With TYPO3 v10 the EventDispatcher was introduced. It is a strongly typed method of
extending TYPO3 and therefore recommended to use wherever available.

However, Events have to be emitted, Hooks and Signals have to be implemented,
in the TYPO3 Core  or an Extension before you can use them, while extending a
PHP class via the XCLASS method allows you to extend any class you like.

<a id="hooks-proposing"></a>

## Proposing Events {#events-proposing}

If you need to extend something which has no event, hook or signal yet, then you
should suggest emitting an event. Normally that is rather easily done by the
author of the source you want to extend.
