/** * {@inheritdoc} * * @throws InvalidMARCspecException */ public function addSubfields($subfields) { if ($subfields instanceof SubfieldInterface) { $this->subfields[] = $subfields; } else { $this->checkIfString($subfields); if (2 > strlen($subfields)) { throw new InvalidMARCspecException(InvalidMARCspecException::SF . InvalidMARCspecException::LENGTH . InvalidSubfieldspecException::MINIMUM2, $subfields); } if ('$' !== $subfields[0]) { throw new InvalidMARCspecException(InvalidMARCspecException::SF . InvalidSubfieldspecException::PREFIX, $subfields); } $parser = new MARCspecParser(); $_subfieldSpecs = $parser->matchSubfields($subfields); foreach ($_subfieldSpecs as $subfieldSpec) { $this->addSubfield($subfieldSpec); } } }