【发布时间】:2018-12-10 19:00:32
【问题描述】:
我正在尝试在我的自定义服务中使用会话变量。
我已经设置将以下行添加到 services.yaml
MySession:
class: App\Services\SessionTest
arguments: ['@session', '@service_container']
我的 SessionTest 看起来像这样
namespace App\Services;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\HttpFoundation\Request;
class SessionTest
{
public $session;
public function __construct()
{
}
public function index()
{
echo "<pre>";
var_dump($this->session);
echo "</pre>";
}
}
并收到此错误: 函数 App\Services\SessionTest::__construct() 的参数太少,在第 33 行的 /var/www/app.dev/src/Controller/OrdersController.php 中传递了 0,而预期正好是 1
【问题讨论】:
-
从错误消息看来,您似乎正在尝试 new SessionTest();来自 OrdersController?此外,您发布的 __construct 并不表示正在注入 SessionInterface。
-
我已经尝试过使用 SessionInterface 并收到相同的错误消息
-
非常值得怀疑。但是你看到我评论的第一部分了吗?您是尝试新的 SessionTest 还是尝试将其注入控制器?
-
是的,我正在尝试执行新的 SessionTest 如果我使用您的版本,则收到 NULL
-
好的。 php new 操作符对 Symfony 的服务容器一无所知。查看文档以了解如何将 SessionTest 等服务注入控制器。 symfony.com/doc/current/…
标签: php symfony session constructor