dedlfix: Fatal error: Uncaught Error: Call to a member function add()

Beitrag lesen

Tach!

ich erhalte ab und an folgende Fehlermeldung

Fatal error: Uncaught Error: Call to a member function add() on boolean in monat.php

Hab mir den Code in der besagten Zeile angeschaut und es wird hier gemeckert

$start->add(new DateInterval('PT'.$trennen[0].'H'.$minuten.'M'));

In $start befindet sich laut der Fehlermeldung ein boolean und kein Objekt, das eine add-Methode hat. Die eigentliche Frage dazu lautet: Wo kommt das boolean her?

$start = DateTime::createFromFormat('H:i', $inhalt);
$start->add(new DateInterval('PT'.$trennen[0].'H'.$minuten.'M'));

Was stimmt hier nicht bzw. warum wird hier gemeckert?

Das sind die relevanten Stellen, die sich auf $start beziehen. Wenn in der zweiten Zeile das boolean angemeckert wird, muss es in der nächstvorhergehenden Zuweisung dahingekommen sein. Und da wäre die Frage, wann DateTime::createFromFormat() ein boolean zurückgibt. Das Handbuch klärt auf: Returns a new DateTime instance or FALSE on failure. Das ist das übliche PHP-Verhalten, dass Fehler über den Rückgabewert signalisiert werden.

Und vor allem wie kann ich den Fehler beheben?

Offensichtlich übergibst du einen Wert, der von DateTime::createFromFormat() nicht verstanden wird. Der Rest ist Programmlogik, dass du die Fälle abfängst, die zu diesem falschen Parameter führen.

Oder vielleicht passt besser zu deinem Anwendungsfall (was ich nicht beurteilen kann), dass du DateTime::createFromFormat() fehlerhaft aufrufst und stattdessen den Rückgabewert auf false testest, und dann anders fortfährst.

dedlfix.