Tach!
// Termindatei erstellen und speichern $ics = new ICS($start, $ende, $name, $description, $location, $filename); $ics->save();
In $ics ist nun ein Objekt abgelegt, sprich: eine Instanz der Klasse ICS.
// Termindatei löschen if(file_exists($ics)){ unlink($ics); }
Sowohl file_exists() als auch unlink() möchten einen Dateinamen haben.
Wenn ich eine extra Datei erstelle wo nur
unlink($filename . '.ics');
drinsteht und die aufrufe, wird die jeweilige Datei gelöscht.
Da rufst du die Funktion ja auch mit einem Dateinamen auf. Vorausgesetzt, in $filename ist ein Dateiname ohne Endung als String enthalten.
Was ist falsch?
Ein Objekt ist kein String mit einem Dateinamen als Inhalt.
dedlfix.