CakePHP
  • 文档
    • 书籍
    • API
    • 视频
    • 报告安全问题
    • 隐私政策
    • 标识和商标
  • 业务解决方案
  • 商品
  • 公路旅行
  • 团队
  • 社区
    • 社区
    • 参与
    • 问题 (Github)
    • 烘焙坊
    • 特色资源
    • 培训
    • 聚会
    • 我的 CakePHP
    • CakeFest
    • 新闻简报
    • Linkedin
    • YouTube
    • Facebook
    • Twitter
    • Mastodon
    • 帮助和支持
    • 论坛
    • Stack Overflow
    • IRC
    • Slack
    • 付费支持
CakePHP

C CakePHP 5.1 Chiffon API

  • 项目
    • CakePHP
      • CakePHP
      • Chronos
      • Elastic Search
      • 队列
  • 版本
    • 5.1
      • 5.1
      • 5.0
      • 4.5
      • 4.4
      • 4.3
      • 4.2
      • 4.1
      • 4.0
      • 3.10
      • 3.9
      • 3.8
      • 3.7
      • 3.6
      • 3.5
      • 3.4
      • 3.3
      • 3.2
      • 3.1
      • 3.0
      • 2.10
      • 2.9
      • 2.8
      • 2.7
      • 2.6
      • 2.5
      • 2.4
      • 2.3
      • 2.2
      • 2.1
      • 2.0
      • 1.3
      • 1.2

命名空间

  • 全局
  • Cake
    • Cache
    • Collection
    • Command
    • Console
    • Controller
    • Core
      • Configure
      • Exception
      • Retry
      • TestSuite
    • Database
    • Datasource
    • Error
    • Event
    • Form
    • Http
    • I18n
    • Log
    • Mailer
    • Network
    • ORM
    • Routing
    • TestSuite
    • Utility
    • Validation
    • View

类 ObjectRegistry

充当对象的注册表/工厂。

为对象类型提供注册表和工厂功能。用作 CakePHP 中各种基于组合的重用功能的超类。

每个子类都需要实现各种抽象方法来完成模板方法 load()。

ObjectRegistry 了解 EventManager,但每个扩展类都需要使用 \Cake\Event\EventDispatcherTrait 来在 set 和 bind 上附加和分离

抽象
命名空间: Cake\Core
参见: \Cake\Controller\ComponentRegistry
参见: \Cake\View\HelperRegistry
参见: \Cake\Console\TaskRegistry

属性摘要

  • $_loaded protected
    array<string, object>

    已加载对象的映射。

方法摘要

  • __debugInfo() public

    调试友好的对象属性。

  • __get() public

    提供对已加载对象的公共读取访问权限

  • __isset() public

    提供对 _loaded 的 isset 访问权限

  • __set() public

    设置对象。

  • __unset() public

    取消设置对象。

  • _checkDuplicate() protected

    检查重复的对象加载。

  • _create() abstract protected

    创建给定类名的实例。

  • _resolveClassName() abstract protected

    应解析给定对象类型的类名。

  • _throwMissingClassError() abstract protected

    当请求的对象名称缺失时抛出异常。

  • count() public

    返回已加载对象的数量。

  • get() public

    获取已加载的对象实例。

  • getIterator() public

    返回一个数组迭代器。

  • has() public

    检查是否加载了给定对象。

  • load() public

    加载/构造对象实例。

  • loaded() public

    获取已加载对象的列表。

  • normalizeArray() public

    将对象配置数组规范化为关联形式,以便更轻松地进行延迟加载。

  • reset() public

    清除注册表中已加载的实例。

  • set() public

    直接将对象按名称设置到注册表中。

  • unload() public

    从注册表中删除对象。

方法详情

__debugInfo() ¶ public

__debugInfo(): array<string, mixed>

调试友好的对象属性。

返回
array<string, mixed>

__get() ¶ public

__get(string $name): object|null

提供对已加载对象的公共读取访问权限

参数
string $name

要读取的属性名称

返回
object|null

__isset() ¶ public

__isset(string $name): bool

提供对 _loaded 的 isset 访问权限

参数
string $name

要检查的对象名称。

返回
bool

__set() ¶ public

__set(string $name, object $object): void

设置对象。

参数
string $name

要设置的属性名称。

object $object

要设置的对象。

返回
void

__unset() ¶ public

__unset(string $name): void

取消设置对象。

参数
string $name

要取消设置的属性名称。

返回
void

_checkDuplicate() ¶ protected

_checkDuplicate(string $name, array<string, mixed> $config): void

检查重复的对象加载。

如果正在加载重复项且具有不同的配置,则情况不妙,将引发异常。

引发异常,因为替换对象不会更新其他对象可能具有的任何引用。此外,简单地更新运行时配置不是一个好选择,因为我们可能缺少依赖于配置的重要构造逻辑。

参数
string $name

注册表中别名的名称。

array<string, mixed> $config

新实例的配置数据。

返回
void
抛出
Cake\Core\Exception\CakeException
当找到重复项时。

_create() ¶ abstract protected

_create(object|string $class, string $alias, array<string, mixed> $config): object

创建给定类名的实例。

此方法应该构建并执行所需的任何其他初始化逻辑。

参数
object|string $class

要构建的类。

string $alias

对象的别名。

array<string, mixed> $config

构造的配置设置

返回
object

_resolveClassName() ¶ abstract protected

_resolveClassName(string $class): class-string|null

应解析给定对象类型的类名。

参数
string $class

要解析的类。

返回
class-string|null

_throwMissingClassError() ¶ abstract protected

_throwMissingClassError(string $class, string|null $plugin): void

当请求的对象名称缺失时抛出异常。

参数
string $class

缺失的类。

string|null $plugin

$class 缺失的插件。

返回
void
抛出
Exception

count() ¶ public

count(): int

返回已加载对象的数量。

返回
int

get() ¶ public

get(string $name): object

获取已加载的对象实例。

参数
string $name

对象的名称。

返回
object
抛出
Cake\Core\Exception\CakeException
如果未加载或未找到。

getIterator() ¶ public

getIterator(): Traversable

返回一个数组迭代器。

返回
Traversable

has() ¶ public

has(string $name): bool

检查是否加载了给定对象。

参数
string $name

要检查的对象名称。

返回
bool

load() ¶ public

load(string $name, array<string, mixed> $config = []): object

加载/构造对象实例。

如果实例已存在,则将返回注册表中的实例。如果子类提供事件支持,则可以使用 $config['enabled'] = false 将构造的对象从注册到事件中排除。

以 {@link \Cake\Controller\Component::$components} 为例。您可以通过设置 'className' 键来为对象设置别名,例如:

protected $components = [
  'Email' => [
    'className' => 'App\Controller\Component\AliasedEmailComponent'
  ];
];

所有对 Email 组件的调用将使用 AliasedEmail 代替。

参数
string $name

要加载的对象的名称/类。

array<string, mixed> $config 可选

加载对象时使用的其他设置。

返回
object
抛出
Exception
如果找不到该类。

loaded() ¶ public

loaded(): list<string>

获取已加载对象的列表。

返回
list<string>

normalizeArray() ¶ public

normalizeArray(array $objects): array<string, array>

将对象配置数组规范化为关联形式,以便更轻松地进行延迟加载。

参数
array $objects

要规范化的子对象数组。

返回
array<string, array>

reset() ¶ public

reset(): $this

清除注册表中已加载的实例。

如果注册表子类具有事件管理器,则对象也将从事件中分离。

返回
$this

set() ¶ public

set(string $name, object $object): $this

直接将对象按名称设置到注册表中。

如果此集合实现事件,则传递的对象将附加到事件管理器中

参数
string $name

要在注册表中设置的对象的名称。

object $object

要存储在注册表中的实例

返回
$this

unload() ¶ public

unload(string $name): $this

从注册表中删除对象。

如果此注册表具有事件管理器,则对象也将从任何事件中分离。

参数
string $name

要从注册表中删除的对象的名称。

返回
$this

属性细节

$_loaded ¶ protected

已加载对象的映射。

类型
array<string, object>
OpenHub
Pingping
Linode
  • 商业解决方案
  • 展示
  • 文档
  • 书籍
  • API
  • 视频
  • 报告安全问题
  • 隐私政策
  • 标识和商标
  • 社区
  • 参与
  • 问题 (Github)
  • 烘焙坊
  • 特色资源
  • 培训
  • 聚会
  • 我的 CakePHP
  • CakeFest
  • 新闻简报
  • Linkedin
  • YouTube
  • Facebook
  • Twitter
  • Mastodon
  • 帮助和支持
  • 论坛
  • Stack Overflow
  • IRC
  • Slack
  • 付费支持

使用 CakePHP API 文档 生成