试图在 Silex 2 中的 class "Silex\Application" 上调用方法 "share"

Attempted to call method "share" on class "Silex\Application" in Silex 2

我正在用最新版本的 silex-skeleton 开发一个项目。尝试使用共享方法时显示以下错误:

代码:

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

错误: 试图在 class "Silex\Application"

上调用方法 "share"

此失败的任何建议或可能原因

Silex 2.0 使用的 Pimple 3.0 移除了 shared 方法,现在默认共享所有服务,如果您想要一个新实例,您必须调用 factory 方法,如changelog for version 2.0.

所以如果你想要一个 login 服务,你应该像这样创建它:

<?php

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

您可以直接在 it's GitHub repository

上查看 3.0 Pimple 版本的文档

PS:请记住,在撰写本文时,Silex 2.0 正处于 开发阶段 ,因此请准备好适应您的代码,直到它获得 2.0 稳定版本。 2.0 has reached prod status as of 2016-05-18