/** * Use another Key's path as the current Key's ancestor * * Given key path will be prepended to any path elements on the current key. * * Example: * ``` * $parent = $datastore->key('Person', 'Dad'); * $key->ancestorKey($parent); * ``` * * @param Key $key The ancestor Key. * @return Key * @throws InvalidArgumentException */ public function ancestorKey(Key $key) { if ($key->state() !== self::STATE_NAMED) { throw new InvalidArgumentException('Cannot use an incomplete key as an ancestor'); } $path = $key->path(); $this->path = array_merge($path, $this->path); return $this; }
public function testSetLastElementIdentifierTypeName() { $key = new Key('foo', ['path' => [['kind' => 'foo', 'id' => 2], ['kind' => 'foo']]]); $key->setLastElementIdentifier(1, Key::TYPE_NAME); $this->assertEquals($key->path(), [['kind' => 'foo', 'id' => 2], ['kind' => 'foo', 'name' => 1]]); }