Rolf b: PHP Funktion zweimal verwenden?

Beitrag lesen

Ich würde gerne folgende Aspekte genauer beleuchten:

  1. Der Name der Funktion. Sie heißt firmen, liefert aber auch eine Abteilung. Der Name scheint mir nicht 100% passend. Kann natürlich ein Irrtum sein, ist nur so ein Gefühl.

  2. Der Name des Parameters $all. Vermutlich hätte ich ihn $nurExtern genannt, weil sich dann besser erschließt, was passiert.

  3. Die Entscheidung, ihm einen Defaultwert zu geben. Wenn eine von beiden Aufrufvarianten der Ausnahmefall ist und die andere öfter verwendet wird, macht ein Defaultwert Sinn. Oder wenn man schon eine Codebasis hat, die die Funktion an vielen Stellen aufruft, und ich einen Parameter hinzufüge. Andernfalls würde ich keinen Default setzen.

  4. Die Konstruktion des SQL Statements. Ich bin wasserscheu und zucke automatisch zusammen, wenn das DRY[1] Prinzip verletzt wird und die Auswertung solcher Parameter auf eine Auswahl von vollständig ausformulierten SQL Queries führt. Ich erzeuge dann lieber Bausteine für die Query und setze sie am Ende zusammen.

$externFilter = $all ? "" : "AND intern = 0";
// oder: $externFilter = $nurExtern ? "AND intern = 0" : "";

$stmt = $mysqli->prepare("SELECT id, code, firma, abteilung, sort, ab_an, signup_an, intern FROM firmen WHERE signup_an = 1 $externFilter ORDER by sort ASC");

Und noch ein Hinweis auf PHP 7: Ab dieser Version kann man die Parametertypen genauer festlegen und so fehlerhafte Übergaben vermeiden:

function firmen(mysqli $mysqli, bool $all = false) {}

Rolf


  1. Don't Repeat Yourself ↩︎