Как расширить существующую модель на PHP?
как бы сначала надо ответить на вопрос "где это нужно и зачем"Вариант 1
Не надо делать ооп ради ооп, просто в класс Message добавь метод getUrl()Вариант 2
Message это какой-то сторонний класс, и нет возможности его изменить, по этому делаем над ним декоратор.class MessageDecorator
{
    private $message;

    public function __construct(Message $message)
    {
        $this->message = $message;
    }

    public function getTitle()
    {
        return $this->message->getTitle();
    }
    
    public function getText()
    {
        return $this->message->getText();
    }

    public function getUrl()
    {
        // create url
        return 'url';
    }
}

$message = new MessageDecorator(new Message($title, $text));
$url = $message->getUrl();Вариант 3
Выносим генерацию url в отдельный сервисclass UrlService
{
    public function getMessageUrl(Message $message)
    {
        // create url
        return 'url';
    }
}

$message = new Message($title, $text);
$urlService = new UrlService();
$url = $urlService->getMessageUrl($message);
Это называется "Наследование"
https://www.php.net/manual/ru/language.oop5.inheri...
https://www.php-fig.org/psr/psr-4/