2016-06-25 2 views
0

Я установил следующие пакеты композитора:Как я могу использовать pSR7 в PHP промежуточного программного

"require": { 
"beatswitch/lock": "0.2.0", 
"league/event": "2.1.2", 
"oscarotero/psr7-middlewares": "v3.16.1", 
"pdepend/pdepend": "2.2.4", 
"sebastian/phpcpd": "2.0.4", 
"instaclick/php-code-sniffer": "1.4.2", 
"phploc/phploc": "3.0.1", 
"phpmd/phpmd": "2.4.3", 
"phpunit/phpunit": "5.5.x-dev", 
"phpunit/phpunit-selenium": "3.0.2", 
"league/route": "3.x-dev", 
"guzzlehttp/psr7": "1.3.0", 
"relay/relay": "2.x-dev", 
"monolog/monolog": "2.0.x-dev", 
"aura/session": "3.x-dev" 

}

и теперь я хочу, чтобы «склеить» эти пакеты вместе с пакетами pSR7-промежуточных программным. К сожалению, я не смог найти информацию о том, как использовать каждую библиотеку из этих посредников вне диспетчера. Основные функции, такие как Access Logging и Routing, уже без проблем.

I интегрированный Aura Sessions как следующее:

Middleware::AuraSession(), 
    ->factory(new Aura\Session\SessionFactory) //(optional) Intance of Aura\Session\SessionFactory 
    ->name('my-session-name'), //(optional) custom session name 

function ($request, $response, $next) { 
    //Get the session instance 
    $session = AuraSession::getSession($request); 

    return $response; 
} 

Это работает с Relayphp определенно и жрать \ Http интерфейс сообщений. Сбрасывание переменной сеанса дает мне базовые данные сеанса с пустыми значениями, потому что я ничего не установил.

К сожалению, я не мог найти какой-либо простой информации о том, как я могу установить сеанс внутри промежуточного программного обеспечения. В конце я получил ответ и могу получить его тело и заголовки, но не больше.

Как получить доступ к функции, установленной в массиве middlewares? Я также попытался просто использовать класс AuraSession и установить переменные над этим классом, но он не работает. Или мне нужно установить все сеансы перед отправкой промежуточных продуктов вместе? Но как они тогда интегрируются в нее?

ответ

1

Я упустил из виду, что я могу установить сеансы внутри анонимной функции, которую я должен реализовать в своем списке промежуточного программного обеспечения, как указано ранее (но не понял, хотя), поэтому позволяет сказать, что я хочу создать сеанс, когда пользователь регистрируется в, с аурой сессии и pSR7-это может промежуточное программное выглядеть следующим образом:

function ($request, $response, $next) { 
    //Get the session instance 
    $session = AuraSession::getSession($request); 

    $auth = new server\modules\authentication; 

    $auth->setUserSession($request, $session); 

    return $response; 
} 

и метод setUserSession может быть:

public function setUserSession ($request, $session) { 
    $segment = $session->getSegment(get_called_class()); 
    if ($this->loggedIn && $segment->get('logged_in', false)) { 
     $segment->set('logged_in', true); 
    } 
}