次のようにセッションを開始(またはアクセス)しようとしています:
$session = new Session();
echo $session->getId();
セッションが自動的に開始されるため、ドキュメントによると、これだけで十分です (http://symfony.com/doc/master/components/http_foundation/sessions.html):
While it is recommended to explicitly start a session, a sessions will actually start
on demand, that is, if any session request is made to read/write session data.
それにもかかわらず、エラーが発生します
Failed to start the session because headers have already been sent.
サービスを呼び出す元のコントローラーは次のとおりです。
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Bundle\FrameworkBundle\Routing\Router;
use Symfony\Component\HttpFoundation\Response;
$auth = $this->get('authentication');
$user_id = $auth->getUserId();
そして getUserId 関数:
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Session\Session;
public function getUserId() {
$session = new Session();
echo $session->getId();
そして、getUserId を次のように変更すると:
public function getUserId() {
$session = $this->getRequest()->getSession();
echo $session->getId();
エラーが発生します:
Call to a member function get() on a non-object