protected static function _relations($type = null, $name = null)
{
$self = static::_object();
if ($name) {
if (isset($self->_relationsToLoad[$name])) {
$t = $self->_relationsToLoad[$name];
unset($self->_relationsToLoad[$name]);
return static::bind($t, $name, (array) $self->{$t}[$name]);
}
return isset($self->_relations[$name]) ? $self->_relations[$name] : null;
}
if (!$type) {
foreach ($self->_relationsToLoad as $name => $t) {
static::bind($t, $name, (array) $self->{$t}[$name]);
}
$self->_relationsToLoad = array();
return $self->_relations;
}
foreach ($self->_relationsToLoad as $name => $t) {
if ($type === $t) {
static::bind($t, $name, (array) $self->{$t}[$name]);
unset($self->_relationsToLoad[$name]);
}
}
return array_filter($self->_relations, function ($i) use($type) {
return $i->data('type') === $type;
});
}