Попытка вызвать метод "share" в классе "Silex\Application" в Silex 2

Я разрабатываю проект с силекс-скелетом в его последней версии. При попытке использовать метод share показывает мне следующую ошибку:

код:

$app['login'] = $app->share(function() use($app) {
    return new Model\UserModel($app);
});

Ошибка: Попытка вызова метода "поделиться" в классе "Silex\Application"

Любые предложения или возможная причина этого отказа

Ответ 1

Silex 2.0 использует Pimple 3.0, который удалил метод shared, теперь все службы разделяются по умолчанию, если вы хотите новый экземпляр, вы должны вызвать метод factory, как указано в changelog для версии 2.0.

Итак, если вы хотите использовать службу входа в систему, вы должны создать ее так:

<?php

$app['login'] = function($app) {
    return new Model\UserModel($app);
};

Вы можете взглянуть на документы для версии 3.0 Pimple прямо на это репозиторий GitHub

PS: Имейте в виду, что на момент написания этой статьи Silex 2.0 находится в разработке, поэтому будьте готовы адаптировать свой код до тех пор, пока он не получит стабильную версию 2.0. 2.0 достиг статуса prod с 2016-05-18