---
name: "Bread::Board::Traversable"
section: "3pm"
platform: "linux"
package: "libbread-board-perl"
version: "0.37-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Bread::Board::Traversable"
---

# Bread::Board::Traversable(3pm)

role for traversing a container service tree

## NAME

Bread::Board::Traversable - role for traversing a container service tree

## VERSION

version 0.37

## SYNOPSIS

```
  my $service = $container->fetch('/some/service/path');
  my $root = $service->get_root_container;
```

## DESCRIPTION

This role provides the basic functionality to traverse a container / service tree. Instances of classes consuming this role will get a parent-child relationship between them.

## ATTRIBUTES

### "parent"

Weak ref to another Bread::Board::Traversable object, read/write accessor (although you should probably not change this value directly in normal code).

## METHODS

### "has\_parent"

Predicate for the "parent" attribute, true if a parent has been set.

### "detach\_from\_parent"

Clearer for the "parent" attribute, you should probably not call this method in normal code.

### "get\_root\_container"

Returns the farthest ancestor of the invocant, i.e. the top-most container this object is a part of.

### "fetch"

```
  my $service = $this->fetch('/absolute/path');
  my $service = $this->fetch('relative/path');
  my $service = $this->fetch('../relative/path');
```

Given a (relative or absolute) path to a service or container, this method walks the tree and returns the Bread::Board::Service or Bread::Board::Container instance for that path. Dies if no object can be found for the given path.

Aliases are resolved in this call, by calling `"aliased_from"` until we get an actual service.

## AUTHOR

Stevan Little \<stevan@iinteractive.com\>

## BUGS

Please report any bugs or feature requests on the bugtracker website https://github.com/stevan/BreadBoard/issues

When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.

## COPYRIGHT AND LICENSE

This software is copyright (c) 2019, 2017, 2016, 2015, 2014, 2013, 2011, 2009 by Infinity Interactive.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
