Я реализовал два класса: isbn10 и isbn13. Я хотел бы создать класс ISBN, так что, когда экземпляр я получить объект типа isbn10 или ISBN13, в соответствии с параметром данного классу ISBN конструктора:Создайте правильный подкласс из родительского класса
$isbn_code = new isbn('978-3-16-148410-0');
Я знаю, что я мог бы сделать что-то подобное с статический метод:
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');
Но было бы возможно создать экземпляр класса и автоматически ISBN получить объект ISBN13 (или isbn10)?
Спасибо, у меня было ощущение, что это невозможно, лучшее решение, я думаю, будет реализовывать один класс isbn. – moray