Hallo dedlfix,
eine Funktion, die im Fehlerfall eine Exception wirft und ansonsten nur true zurückgibt, braucht gar nichts zurückzugeben.
Ich halte eine solche Funktion aber für überflüssig. Wenn ich schon die id durch fetch (also den Kunden einlesen) überprüfe und Fehler durch Exception anzeige, dann kann ich auch gleich eine Funktion get schreiben
function getCustomer( int $id ) : Customer {
$customer = Database::fetch ( $id );
if ( $customer === null ) {
throw new Exception( "can't find Customer ID $id" );
return $customer
}
das könnte dann in die Customer-Repositoryklasse hinein (wobei Database:fetch ein schlechter Methodenname ist um Kunden zu lesen - aber ich nehme mal an, dass der generische Name dem Umstand geschuldet ist, dass es sich um ein abstraktes Beispiel handelt).
Wenn ich jetzt nur wissen will, ob die id ok ist, ignoriere ich die Rückgabe. Ansonsten arbeite ich gleich mit dem gefundenen Kunden weiter. So ergibt es einen Sinn.
Eine echte checkCustomerId Methode sollte sinnvollerweise einen anderen Datenbankzugriff machen, der ausschließlich die ID validiert. Ein voller Fetch dürfte außer einem Index Seek auch das Lesen der Tabledaten benötigen. Liest man nur die ID, reicht ein Index Seek. Das ist schneller. Ich würde einer solchen Funktion aber auch einen echten bool-Rückgabewert verpassen und Exceptions nur im Fall eines fehlgeschlagenen Datenbankzugriffs werfen. Denn wenn ich eine solche Methode tatsächlich brauche, dann ist true und false halbwegs gleichwahrscheinlich, das ist nicht der Anwendungsfall für Excptions. Exceptions wirft man dann, wenn dieser Fall im Normalbetrieb nicht auftaucht; zumindest habe ich das mal so gelernt.
Rolf
sumpsi - posui - clusi