2
私は2つのクラスisbn10とisbn13を実装しました。親クラスから正しいサブクラスをインスタンス化する
$isbn_code = new isbn('978-3-16-148410-0');
私は私がこのような何かを行うことができます知っている:私はISBNクラスのコンストラクタに与えられたパラメータに基づいて、インスタンス化するとき、私はタイプisbn10またはISBN13のオブジェクトを取得するように、クラスISBNを作成したいです静的メソッド:
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