课程会话
此类是原生 PHP 会话函数的包装器。它提供了几个预设,用于通过外部处理程序进行最常见的会话配置,并帮助在没有警告的情况下在 CLI 中使用会话。
可以使用 Session::create()
从默认值创建会话,也可以通过实例化此类并传递您要使用的完整选项来获取新会话的实例。
当省略特定选项时,此类将从 php.ini 中 session.*
指令的配置值中获取其默认值。当提供配置值时,此类也会更改这些指令。
属性摘要
-
$_engine protected
SessionHandlerInterface|null
用作持久化会话数据的引擎的会话处理程序实例。
-
$_isCLI protected
bool
此会话是否在 CLI 环境下运行
-
$_lifetime protected
int
会话有效的秒数
-
$_started protected
bool
指示会话是否已启动
-
$headerSentInfo protected
array{filename: string, line: int}|null
有关在何处发送标头的信息。
方法摘要
-
__construct() public
构造函数。
-
_defaultConfig() protected static
获取预先制作的默认会话配置之一。
-
_hasSession() protected
返回是否存在会话
-
_overwrite() protected
用于将新数据写入 _SESSION,因为 PHP 不希望我们设置 _SESSION 变量本身。
-
_timedOut() protected
如果会话不再有效,因为上次访问它的时间是在配置的超时时间之后,则返回 true。
-
check() public
如果给定的变量名在会话中设置,则返回 true。
-
clear() public
清除会话。
-
close() public
写入数据并关闭会话
-
consume() public
从会话中读取并删除变量。
-
create() public static
在为其构建配置包后,返回一个新的会话实例。此函数允许一个选项数组,该数组将用于配置会话和要使用的处理程序。配置数组中最重要的键是
defaults
,它指示要继承的配置集,可能的默认值为 -
delete() public
从会话中删除变量。
-
destroy() public
用于销毁无效会话的辅助方法。
-
engine() public
设置要用于此会话的会话处理程序实例。如果第一个参数传递字符串,则它将被视为类名,第二个参数将作为构造函数中的第一个参数传递。
-
id() public
返回会话 ID。调用此方法不会自动启动会话。您可能需要手动断言一个已启动的会话。
-
options() public
为
$options
中的每个键调用 ini_set 并将其设置为传递数组中的相应值。 -
read() public
返回给定的会话变量,或者如果未给出参数,则返回所有会话变量。
-
readOrFail() public
返回给定的会话变量,或者如果未找到则抛出异常。
-
renew() public
重新启动此会话。
-
setEngine() protected
设置引擎属性并更新 PHP 中的会话处理程序。
-
start() public
启动会话。
-
started() public
确定会话是否已启动。
-
write() public
将值写入给定的会话变量名。
方法详情
__construct() ¶ public
__construct(array<string, mixed> $config = [])
构造函数。
配置
- timeout: 会话可以空闲且保持有效的时间(分钟)。如果设置为 0,则不会应用服务器端超时。
- cookiePath: 设置会话 Cookie 的 URL 路径。映射到
session.cookie_path
php.ini 配置。默认为应用程序的基本路径。 - ini: 要在会话启动之前更改的 php.ini 指令列表。
- handler: 一个至少包含
engine
键的数组。用作持久化数据的会话引擎。数组中的其余键将作为引擎的配置数组传递。您可以将engine
键设置为已实例化的会话处理程序对象。
参数
-
array<string, mixed>
$config optional 要应用于此会话对象的配置
_defaultConfig() ¶ protected static
_defaultConfig(string $name): array|false
获取预先制作的默认会话配置之一。
参数
-
string
$name 配置名称。
返回值
array|false
_overwrite() ¶ protected
_overwrite(array $old, array $new): void
用于将新数据写入 _SESSION,因为 PHP 不希望我们设置 _SESSION 变量本身。
参数
-
array
$old 旧变量集 => 值
-
array
$new 新变量集 => 值
返回值
void
check() ¶ public
check(string|null $name = null): bool
如果给定的变量名在会话中设置,则返回 true。
参数
-
string|null
$name optional 要检查的变量名
返回值
bool
clear() ¶ public
clear(bool $renew = false): void
清除会话。
它还可以选择清除会话 ID 并更新会话。
参数
-
bool
$renew optional 如果会话应该更新,也是。默认为 false。
返回值
void
consume() ¶ public
consume(string $name): mixed|null
从会话中读取并删除变量。
参数
-
string
$name 要读取和删除的键(或发送到 Hash.extract 的路径)。
返回值
mixed|null
create() ¶ public static
create(array $sessionConfig = []): static
在为其构建配置包后,返回一个新的会话实例。此函数允许一个选项数组,该数组将用于配置会话和要使用的处理程序。配置数组中最重要的键是 defaults
,它指示要继承的配置集,可能的默认值为
- php: 只使用 php.ini 中配置的会话
- cache: 使用 CakePHP 缓存系统作为会话的存储,您需要传递
config
键,其中包含已配置的缓存引擎的名称。 - database: 使用 CakePHP ORM 来持久化和管理会话。默认情况下,这需要您数据库中名为
sessions
的表,或者配置中有一个model
键来指示要使用哪个 Table 对象。 - cake: 使用文件来存储会话,但让 CakePHP 管理它们并决定在哪里存储它们。
完整的选项列表如下
- defaults: 如上所述,可以是 'php'、'database'、'cache' 或 'cake'。
- handler: 包含处理程序配置的数组。
- ini: 会话开始前要设置的 php.ini 指令列表。
- timeout: 以分钟为单位的“空闲超时”。如果在
timeout
分钟内没有收到请求,则会重新生成会话。
参数
-
array
$sessionConfig 可选 会话配置。
返回值
静态
另请参阅
engine() ¶ 公共
engine(SessionHandlerInterface|string|null $class = null, array<string, mixed> $options = []): SessionHandlerInterface|null
设置要用于此会话的会话处理程序实例。如果第一个参数传递字符串,则它将被视为类名,第二个参数将作为构造函数中的第一个参数传递。
如果将 SessionHandlerInterface 的实例作为第一个参数提供,则处理程序将设置为它。
如果没有传递任何参数,它将返回当前配置的处理程序实例,如果不存在则返回 null。
参数
-
SessionHandlerInterface|string|null
$class 可选 要使用的会话处理程序。
-
array<string, mixed>
$options 可选 要传递给 SessionHandler 构造函数的选项。
返回值
SessionHandlerInterface|null
抛出
InvalidArgumentException
id() ¶ 公共
id(string|null $id = null): string
返回会话 ID。调用此方法不会自动启动会话。您可能需要手动断言一个已启动的会话。
通过将 ID 传入它,您也可以在会话尚未开始的情况下替换会话 ID。请注意,根据会话处理程序的不同,会话 ID 中并不允许所有字符。例如,文件会话处理程序只允许 a-z A-Z 0-9 、(逗号)和 -(减号)范围内的字符。
参数
-
string|null
$id 可选 用于替换当前会话 ID 的 ID。
返回值
字符串
options() ¶ 公共
options(array<string, mixed> $options): void
为 $options
中的每个键调用 ini_set 并将其设置为传递数组中的相应值。
示例
$session->options(['session.use_cookies' => 1]);
参数
-
array<string, mixed>
$options 要设置的 Ini 选项。
返回值
void
抛出
Cake\Core\Exception\CakeException
如果任何指令无法设置。
read() ¶ 公共
read(string|null $name = null, mixed $default = null): mixed|null
返回给定的会话变量,或者如果未给出参数,则返回所有会话变量。
参数
-
string|null
$name optional 会话变量的名称(或发送到 Hash.extract 的路径)。
-
mixed
$default 可选 路径不存在时的返回值。
返回值
mixed|null
readOrFail() ¶ 公共
readOrFail(string $name): mixed|null
返回给定的会话变量,或者如果未找到则抛出异常。
参数
-
string
$name 会话变量的名称(或发送到 Hash.extract 的路径)。
返回值
mixed|null
抛出
Cake\Core\Exception\CakeException
setEngine() ¶ 受保护的
setEngine(SessionHandlerInterface $handler): SessionHandlerInterface
设置引擎属性并更新 PHP 中的会话处理程序。
参数
-
SessionHandlerInterface
$handler 要设置的处理程序。
返回值
SessionHandlerInterface
write() ¶ 公共
write(array|string $name, mixed $value = null): void
将值写入给定的会话变量名。
参数
-
array|string
$name 变量的名称。
-
mixed
$value 可选 要写入的值。
返回值
void