Signatur
Beschreibung
phpdbg_break_method() ermöglicht es, innerhalb eines PHP-Skripts, das unter dem phpdbg-Debugger ausgeführt wird, programmatisch einen Breakpoint am Anfang einer bestimmten Klassen-Methode zu setzen. Sobald die Ausführung diese Methode erreicht, hält der Debugger an und ermöglicht eine interaktive Inspektion des Programmzustands.
Die Funktion ist ausschließlich im Kontext von phpdbg sinnvoll. In einer normalen PHP-Laufzeitumgebung (CLI, FPM, Web-SAPI) steht sie nicht zur Verfügung und führt zu einem Fehler. Sie ist besonders hilfreich, wenn Breakpoints dynamisch gesetzt werden sollen – etwa abhängig von einer bestimmten Bedingung oder einem Konfigurationswert.
Im Gegensatz zu interaktiv im phpdbg-Prompt gesetzten Breakpoints erlaubt phpdbg_break_method() die Steuerung direkt aus dem Quellcode heraus, ohne den Debugger-Prompt zu verwenden. Dies eignet sich vor allem für komplexe Anwendungen, bei denen der genaue Eintrittspunkt in eine Methode im Voraus bekannt ist, aber der Breakpoint erst zur Laufzeit gesetzt werden soll.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $class Pflicht | string | Der vollständige Name der Klasse (ggf. mit Namespace), deren Methode beobachtet werden soll. | |
| $method Pflicht | string | Der Name der Methode innerhalb der angegebenen Klasse, bei deren Aufruf der Breakpoint ausgelöst werden soll. |
Rückgabewert
Beispiele
Breakpoint auf eine Instanzmethode setzen
<?php
// Dieses Skript muss unter phpdbg ausgeführt werden:
// phpdbg -r script.php
class UserService
{
public function login(string $username): void
{
echo "Login: $username\n";
}
}
// Setzt einen Breakpoint am Beginn von UserService::login
phpdbg_break_method('UserService', 'login');
$service = new UserService();
$service->login('alice'); // phpdbg hält hier an
Bedingter Breakpoint abhängig von einer Umgebungsvariable
<?php
// Nur im Debug-Modus einen Breakpoint setzen
if (getenv('APP_DEBUG') === 'true') {
phpdbg_break_method('OrderProcessor', 'processPayment');
}
class OrderProcessor
{
public function processPayment(float $amount): bool
{
// Zahlungslogik ...
return true;
}
}
$processor = new OrderProcessor();
$processor->processPayment(99.99);
// Wichtig · Fallstricke
Achtung: phpdbg_break_method() ist ausschließlich verfügbar, wenn das Skript unter dem phpdbg-SAPI ausgeführt wird. In allen anderen Umgebungen (z. B. Apache, PHP-FPM, CLI ohne phpdbg) ist die Funktion nicht definiert und führt zu einem fatalen Fehler. Es empfiehlt sich daher, den Aufruf mit function_exists('phpdbg_break_method') abzusichern oder ihn ausschließlich in Entwicklungsumgebungen zu belassen.
Namespace-Klassen müssen mit ihrem vollständigen qualifizierten Namen angegeben werden, z. B. 'App\\Services\\UserService'.