function __construct(DBConnector $db) { Assert::isTrue(isset(self::$drivers[$db->getDriver()->getId()]), "unknown driver is specified: {$db->getDriver()}"); $className = self::$drivers[$db->getDriver()->getId()]; $driver = new ReflectionClass($className); Assert::isTrue($driver->isSubclassOf(new ReflectionClass('DBBackup')), "{$className} should implement DBBackup"); $this->driver = $driver->newInstance($db); }