Session 如何在独立类中从DI获取Phalcon会话
我在Phalcon项目中创建了一个类。我想从Session 如何在独立类中从DI获取Phalcon会话,session,phalcon,Session,Phalcon,我在Phalcon项目中创建了一个类。我想从DI获取会话服务,以便检查是否设置了变量 我试过: $di = Phalcon\DI::getDefault(); echo $di->get("session")->get("user_id"); exit; 但是,它返回的消息是会话已经启动-忽略会话\u start() 我的会话服务是这样注册的: <?php use Phalcon\Mvc\View; use Phalcon\DI\FactoryDefault; use Ph
DI
获取会话
服务,以便检查是否设置了变量
我试过:
$di = Phalcon\DI::getDefault();
echo $di->get("session")->get("user_id");
exit;
但是,它返回的消息是会话已经启动-忽略会话\u start()
我的会话服务是这样注册的:
<?php
use Phalcon\Mvc\View;
use Phalcon\DI\FactoryDefault;
use Phalcon\Mvc\Dispatcher;
use Phalcon\Mvc\Url as UrlProvider;
use Phalcon\Mvc\View\Engine\Volt as VoltEngine;
use Phalcon\Mvc\Model\Metadata\Memory as MetaData;
use Phalcon\Session\Adapter\Files as SessionAdapter;
use Phalcon\Flash\Session as FlashSession;
use Phalcon\Events\Manager as EventsManager;
//setup the dependency injection
$di = new FactoryDefault();
//setup the session
$di->set('session', function() {
$session = new SessionAdapter();
$session->start();
return $session;
});
$di->set(
'session',
function () {
$session = new \Phlacon\Session\Adapter\Files();
$session->start();
return $session;
}
);
尝试将会话注册为非共享组件,如下所示:
<?php
use Phalcon\Mvc\View;
use Phalcon\DI\FactoryDefault;
use Phalcon\Mvc\Dispatcher;
use Phalcon\Mvc\Url as UrlProvider;
use Phalcon\Mvc\View\Engine\Volt as VoltEngine;
use Phalcon\Mvc\Model\Metadata\Memory as MetaData;
use Phalcon\Session\Adapter\Files as SessionAdapter;
use Phalcon\Flash\Session as FlashSession;
use Phalcon\Events\Manager as EventsManager;
//setup the dependency injection
$di = new FactoryDefault();
//setup the session
$di->set('session', function() {
$session = new SessionAdapter();
$session->start();
return $session;
});
$di->set(
'session',
function () {
$session = new \Phlacon\Session\Adapter\Files();
$session->start();
return $session;
}
);
注意,$di->set()
或者使用$di->set()
而不是$di->setShared()
修复方法是使用setShared
将服务设置为共享,谢谢。查看我的更新-我的会话或多或少以相同的方式注册。因此,在注册和启动会话之前,您的应用程序中正在启动会话。尝试将DI中的会话注册放在bootstrap code或services.php文件的顶部-看看这是否有助于查看我的编辑-不幸的是,这没有帮助。在代码的许多其他部分中,我在获取会话方面没有问题,因此不确定要做什么!在我看来,当我调用$di->get(“session”)->get(“user_id”)
在我的代码中,因为这表示会话已经启动(应该是从di注册中启动时开始)