类组件
单个组件的基类。组件提供可重用的控制器逻辑片段,这些逻辑片段可以组合到控制器中。组件还提供请求生命周期回调,以便在特定点注入逻辑。
初始化钩子
与控制器和表格类似,此类具有一个 initialize() 钩子,您可以使用它来添加自定义的“构造函数”逻辑。重要的是要记住,每个请求(和子请求)只会创建任何给定组件的一个实例。
生命周期回调
组件可以提供多个回调,这些回调在请求周期的不同阶段被触发。可用的回调是
beforeFilter(EventInterface $event)
默认情况下,在 Controller::beforeFilter() 方法之前调用。startup(EventInterface $event)
在 Controller::beforeFilter() 方法之后调用,并在控制器动作调用之前调用。beforeRender(EventInterface $event)
在 Controller::beforeRender() 之前调用,在视图类加载之前调用。afterFilter(EventInterface $event)
在动作完成后和视图渲染完成后但 Controller::afterFilter() 之前调用。beforeRedirect(EventInterface $event $url, Response $response)
在重定向之前调用。允许您通过返回一个 Response 实例来更改将要重定向到的 URL,该实例使用 Response::location() 设置了新的 URL。可以通过停止事件传播来阻止重定向。
虽然控制器不是回调方法的显式参数,但它是每个事件的主题,可以使用 EventInterface::getSubject() 获取。
请参见: \Cake\Controller\Controller::$components
链接: https://book.cakephp.com.cn/5/en/controllers/components.html
属性摘要
-
$_config protected
array<string, mixed>
运行时配置
-
$_configInitialized protected
bool
配置属性是否已使用默认值配置
-
$_defaultConfig protected
array<string, mixed>
默认配置
-
$_registry protected
Cake\Controller\ComponentRegistry
用于延迟加载组件的组件注册类。
-
$componentInstances protected
array<string,Cake\Controller\Component>
加载的组件实例。
-
$components protected
array
此组件使用的其他组件。
方法摘要
-
__construct() public
构造函数
-
__debugInfo() public
返回一个可以用来描述此对象内部状态的数组。
-
__get() public
用于延迟加载 $components 的魔术方法。
-
_configDelete() protected
删除单个配置键。
-
_configRead() protected
读取配置键。
-
_configWrite() protected
写入配置键。
-
configShallow() public
将提供的配置与现有配置合并。与
config()
不同,config()
对嵌套键执行递归合并,此方法执行简单的合并。 -
getConfig() public
返回配置。
-
getConfigOrFail() public
返回此特定键的配置。
-
getController() public
获取此组件绑定的控制器。
-
implementedEvents() public
获取此组件感兴趣的控制器回调。
-
initialize() public
构造函数钩子方法。
-
log() public
用于向日志写入消息的便捷方法。有关向日志写入的更多信息,请参阅 Log::write()。
-
setConfig() public
设置配置。
方法详情
__construct() ¶ public
__construct(Cake\Controller\ComponentRegistry $registry, array<string, mixed> $config = [])
构造函数
参数
-
Cake\Controller\ComponentRegistry
$registry 此组件可以用来延迟加载其组件的组件注册。
-
array<string, mixed>
$config optional 配置设置数组。
__debugInfo() ¶ public
__debugInfo(): array<string, mixed>
返回一个可以用来描述此对象内部状态的数组。
返回
array<string, mixed>
__get() ¶ public
__get(string $name): Cake\Controller\Component|null
用于延迟加载 $components 的魔术方法。
参数
-
string
$name 要获取的组件的名称。
返回
Cake\Controller\Component|null
_configDelete() ¶ protected
_configDelete(string $key): void
删除单个配置键。
参数
-
string
$key 要删除的键。
返回
void
抛出
Cake\Core\Exception\CakeException
如果试图覆盖现有的配置
_configRead() ¶ protected
_configRead(string|null $key): mixed
读取配置键。
参数
-
string|null
$key 要读取的键。
返回
mixed
_configWrite() ¶ protected
_configWrite(array<string, mixed>|string $key, mixed $value, string|bool $merge = false): void
写入配置键。
参数
-
array<string, mixed>|string
$key 要写入的键。
-
mixed
$value 要写入的值。
-
string|bool
$merge optional 如果要递归合并,则为 true,如果要简单合并,则为“浅”,如果要覆盖,则为 false,默认为 false。
返回
void
抛出
Cake\Core\Exception\CakeException
如果试图覆盖现有的配置
configShallow() ¶ public
configShallow(array<string, mixed>|string $key, mixed|null $value = null): $this
将提供的配置与现有配置合并。与 config()
不同,config()
对嵌套键执行递归合并,此方法执行简单的合并。
设置特定值
$this->configShallow('key', $value);
设置嵌套值
$this->configShallow('some.nested.key', $value);
同时更新多个配置设置
$this->configShallow(['one' => 'value', 'another' => 'value']);
参数
-
array<string, mixed>|string
$key 要设置的键,或配置的完整数组。
-
mixed|null
$value optional 要设置的值。
返回
$this
getConfig() ¶ public
getConfig(string|null $key = null, mixed $default = null): mixed
返回配置。
用法
读取整个配置
$this->getConfig();
读取特定值
$this->getConfig('key');
读取嵌套值
$this->getConfig('some.nested.key');
使用默认值读取
$this->getConfig('some-key', 'default-value');
参数
-
string|null
$key optional 要获取的键,如果要获取整个配置,则为 null。
-
mixed
$default optional 键不存在时的返回值。
返回
mixed
getConfigOrFail() ¶ public
getConfigOrFail(string $key): mixed
返回此特定键的配置。
此键的配置值必须存在,永远不能为 null。
参数
-
string
$key 要获取的键。
返回
mixed
抛出
InvalidArgumentException
getController() ¶ public
getController(): Cake\Controller\Controller
获取此组件绑定的控制器。
返回
Cake\Controller\Controller
implementedEvents() ¶ public
implementedEvents(): array<string, mixed>
获取此组件感兴趣的控制器回调。
使用约定将控制器事件映射到标准组件回调方法名。通过定义其中一个回调方法,组件被认为对相关事件感兴趣。
如果你需要添加非约定式事件监听器,或者你想让组件监听非标准事件,请重写此方法。
返回
array<string, mixed>
initialize() ¶ public
initialize(array<string, mixed> $config): void
构造函数钩子方法。
实现此方法以避免覆盖构造函数并调用父类。
参数
-
array<string, mixed>
$config 提供给此组件的配置设置。
返回
void
log() ¶ public
log(Stringable|string $message, string|int $level = LogLevel::ERROR, array|string $context = []): bool
用于向日志写入消息的便捷方法。有关向日志写入的更多信息,请参阅 Log::write()。
参数
-
Stringable|string
$message 日志消息。
-
string|int
$level 可选 错误级别。
-
array|string
$context 可选 与此消息相关的其他日志数据。
返回
bool
setConfig() ¶ public
setConfig(array<string, mixed>|string $key, mixed|null $value = null, bool $merge = true): $this
设置配置。
用法
设置特定值
$this->setConfig('key', $value);
设置嵌套值
$this->setConfig('some.nested.key', $value);
同时更新多个配置设置
$this->setConfig(['one' => 'value', 'another' => 'value']);
参数
-
array<string, mixed>|string
$key 要设置的键,或配置的完整数组。
-
mixed|null
$value optional 要设置的值。
-
bool
$merge 可选 是否递归合并或覆盖现有配置,默认为 true。
返回
$this
抛出
Cake\Core\Exception\CakeException
当尝试设置一个无效的键时。