pl: Platzhalter in MySQL Funktionen

Beitrag lesen

hi Felix,

Ich finde Deine Methode Moon::load in dieser Form ohnehin nicht clever gedacht:

function load($d,$m,$y, PDO $pdo)

Warum erwartest Du den Datumswert in seinen Einzelheiten (Tag, Monat und Jahr - und auch noch in dieser Reihenfolge?!?),

Die Antwort ist ganz einfach und steht auch so in meinem Artikel: Weil die Klasse Moon von der Klasse Scaliger erbt und der Konstruktor dieser Elternklasse das Datum als Tag, Monat und Jahr als Einzelwerte erwartet.

anstatt als Datumswert (egal, ob ein DateTime-Objekt, UNIX-Timestamp oder Y-m-d-String)?

Mein Artikel zeigt die Anwendung der Methode fetchObject():

fetchObject('Moon', array($d,$m,$y));
#                   ^ Argumente für den Konstruktor
#            ^ Name der Klasse desen Instanz zu erstellen ist 

Wir haben also 2 Dinge zu beachten, einmal die Argumentenliste des Konstruktors und zum Anderen die Parameter eines SQL-Statements innerhalb der Klassenerweiterung. Nach außen hin jedoch ist diese Klassenerweiterung transparent und bekommt somit Tag, Monat, Jahr als Einzelwerte übergeben.

Meine API orientiert sich also an der Elternklasse. In Perl übrigens auch:

my $moon = Moon->new( date => '9.2.2020' ) or die $@;
#                    gemäß Elternklasse 

MFG