Check if this node name is valid. Returns null if valid, an exception otherwise.
public isValidNodename ( string $nodeName ) : PHPCR\RepositoryException | null | ||
$nodeName | string | The node local name |
Résultat | PHPCR\RepositoryException | null |
/** * Use the name and parent fields to generate the id * * {@inheritDoc} */ public function generate($document, ClassMetadata $class, DocumentManager $dm, $parent = null) { if (null === $parent) { $parent = $class->parentMapping ? $class->getFieldValue($document, $class->parentMapping) : null; } $name = $class->nodename ? $class->getFieldValue($document, $class->nodename) : null; $id = $class->getFieldValue($document, $class->identifier); if (empty($id)) { if (empty($name) && empty($parent)) { throw IdException::noIdentificationParameters($document, $class->parentMapping, $class->nodename); } if (empty($parent)) { throw IdException::noIdNoParent($document, $class->parentMapping); } if (empty($name)) { throw IdException::noIdNoName($document, $class->nodename); } } // use assigned ID by default if (empty($parent) || empty($name)) { return $id; } if ($exception = $class->isValidNodename($name)) { throw IdException::illegalName($document, $class->nodename, $name); } // determine ID based on the path and the node name return $this->buildName($document, $class, $dm, $parent, $name); }
/** * @depends testClassName */ public function testIsValidNodename(ClassMetadata $cm) { $this->assertInstanceOf('PHPCR\\RepositoryException', $cm->isValidNodename('')); $this->assertInstanceOf('PHPCR\\RepositoryException', $cm->isValidNodename('a:b:c')); $this->assertInstanceOf('PHPCR\\RepositoryException', $cm->isValidNodename('a:')); $this->assertInstanceOf('PHPCR\\RepositoryException', $cm->isValidNodename(':a')); $this->assertInstanceOf('PHPCR\\RepositoryException', $cm->isValidNodename(':')); $this->assertInstanceOf('PHPCR\\RepositoryException', $cm->isValidNodename('x/y')); $this->assertNull($cm->isValidNodename('a:b')); $this->assertNull($cm->isValidNodename('b')); }