Ich habe zwei Klassen, Isbn10 und Isbn13 implementiert. Ich möchte eine Klasse isbn erstellen, so dass, wenn instanziiert ich ein Objekt vom Typ ISBN10 oder ISBN13 erhalten, entsprechend einem Parameter an die isbn Klassenkonstruktors gegeben:Instanziieren Sie die richtige Unterklasse von einer Elternklasse
$isbn_code = new isbn('978-3-16-148410-0');
Ich weiß, dass ich etwas tun könnte mit eine statische Methode:
class isbn {
public static function new($isbn) {
if (preg_match('/' . isbn13::isbn_regex . '/', $isbn)) {
return new isbn13($isbn);
} else if (preg_match('/' . isbn10::isbn_regex . '/', $isbn)) {
return new isbn10($isbn);
} else {
throw new Exception("Invalid ISBN code", 1);
}
}
}
$isbn_code = isbn::new('978-3-16-148410-0');
Aber wäre es möglich, die ISBN-Nummer Klasse zu instanziiert und automatisch ein ISBN13 Objekt (oder ISBN10) erhalten?
Danke, ich hatte das Gefühl, dass es nicht möglich ist, die beste Lösung, die ich denke, wäre die Implementierung einer einzelnen ISBN-Klasse. – moray