src/Slug.php
public function Link($action = null)
    {
        $link = null;
        $owner = $this->getOwner();
        $action = ($action) ? Controller::join_links($owner->URLSlug, $action) : $owner->URLSlug;
        
        $relationName = $this->relationName;
        if ($relationName && ($parent = $owner->$relationName()) && $parent->hasMethod('Link')) {
            $link = $parent->Link($action);
        } elseif (Controller::has_curr()) {
            // Quite the assumption, but sufficient in most cases.
            $link = Controller::curr()->Link($action);
        }
        return $link;
    }
public function Link($action = null)
    {
        $link = null;
        $owner = $this->getOwner();
        $action = ($action) ? Controller::join_links($owner->URLSlug, $action) : $owner->URLSlug;
        
        $relationName = $this->relationName;
        if ($relationName && ($parent = $owner->$relationName()) && $parent->hasMethod('Link')) {
            $link = $parent->Link($action);
        } elseif (Controller::has_curr()) {
            // Quite the assumption, but sufficient in most cases.
            $link = Controller::curr()->Link($action);
        }
        return $link;
    }
Get the link to be able to request this (owner) object from a URL
The nature of a DataExtension is that this can be overridden at any
time by defining the `Link($action = null)` method on the owner class.

@param string|array $action
@return string