dczajkowski/colloquy

一个用于管理持久会话上下文的无框架包。

0.3.0 2018-11-26 04:39 UTC

This package is auto-updated.

Last update: 2024-08-26 16:15:49 UTC


README

一个用于管理持久会话上下文的无框架包。

Latest Stable Version License Scrutinizer Code Quality Code Coverage Build Status

安装

composer install dczajkowski/colloquy

用法

使用注释自动模式

标识符解析器声明

<?php

namespace App;

class SessionIdentifierResolver implements \Colloquy\IdentifierResolverInterface
{
    public function get($controller): string
    {
        return // code to get session id 
    }
}

上下文绑定

<?php

\Colloquy\Colloquy::bind(
    'session',
    new \App\SessionIdentifierResolver,
    new \Colloquy\Drivers\FileDriver($pathToWritableDirectory)
);

在控制器中使用

<?php

namespace App\Http\Controllers;

/** @ColloquyContext('session') */
class FormController
{
    use \Colloquy\ColloquyContexts;
    
    /** @ColloquyPersist */
    protected $user;

    /** @ColloquyBegin */
    private function step1()
    {
        $this->user = new \App\Models\User;
    }

    private function step2()
    {
        $this->user->name = 'John';
    }

    /** @ColloquyEnd */
    private function step3()
    {
        echo $this->user->name; // John
    }
}

手动使用

<?php

use Colloquy\Colloquy;
use Colloquy\Drivers\FileDriver;

class User
{
   private $name;
   
   public function __construct(string $name)
   {
       $this->name = $name;
   }
}

/** Starting a Conversation */

$wrapper = new Colloquy(new FileDriver('storage'));

$homeContext = $wrapper->context('Home');
$formContext = $wrapper->context('Form');

/** Primitive types */

$homeContext->add('Joe', 'name');
$homeContext->add('ilovecats', 'password');
$formContext->add('Jane', 'name');

$name = $homeContext->get('name'); // Joe

$homeContext->set('John', 'name');

$name = $homeContext->get('name'); // John

/** Objects */

$user = new User('Jack');

$homeContext->add($user, 'user');

var_dump($user); // User { name: "Jack" }

$user = $homeContext->get('user');

var_dump($user); // User { name: "Jack" }

/** Ending a Conversation */

$wrapper->end('Form');
$wrapper->end('Home');

贡献

欢迎贡献。如果您愿意,只需提交一个包含您希望看到的任何功能的PR即可。

作者

该库由 Dariusz Czajkowski、Grzegorz Tłuszcz、Aleksander Kuźma、Karol Piwnicki 制作。

许可证

Colloquy包是开源软件,受MIT许可证的许可。