GDS\Mapper\RESTv1::buildKeyPath PHP Method

buildKeyPath() public method

Create a fully qualified Key path
public buildKeyPath ( Entity $obj_gds_entity, boolean $bol_first_node = true ) : array
$obj_gds_entity GDS\Entity
$bol_first_node boolean
return array
    public function buildKeyPath(Entity $obj_gds_entity, $bol_first_node = true)
    {
        $str_kind = $obj_gds_entity->getKind();
        if (null === $str_kind) {
            if ($bol_first_node) {
                if ($this->obj_schema instanceof Schema) {
                    $str_kind = $this->obj_schema->getKind();
                } else {
                    throw new \Exception('Could not build full key path, no Schema set on Mapper and no Kind set on Entity');
                }
            } else {
                throw new \Exception('Could not build full key path, no Kind set on (nth node) GDS Entity');
            }
        }
        // Build the first node in the Key Path from this entity
        $arr_full_path = [$this->createKeyPathElement(['kind' => $str_kind, 'id' => $obj_gds_entity->getKeyId(), 'name' => $obj_gds_entity->getKeyName()])];
        // Add any ancestors to the Key Path
        $mix_ancestry = $obj_gds_entity->getAncestry();
        if (is_array($mix_ancestry)) {
            $arr_ancestor_path = [];
            foreach ($mix_ancestry as $arr_ancestor_element) {
                $arr_ancestor_path[] = $this->createKeyPathElement($arr_ancestor_element);
            }
            $arr_full_path = array_merge($arr_ancestor_path, $arr_full_path);
        } elseif ($mix_ancestry instanceof Entity) {
            $arr_full_path = array_merge($this->buildKeyPath($mix_ancestry, false), $arr_full_path);
        }
        return $arr_full_path;
    }