Class TableRegistry
Provides a registry/factory for Table objects.
This registry allows you to centralize the configuration for tables their connections and other meta-data.
Configuring instances
You may need to configure your table objects, using TableRegistry you can centralize configuration. Any configuration set before instances are created will be used when creating instances. If you modify configuration after an instance is made, the instances will not be updated.
TableRegistry::config('Users', ['table' => 'my_users']);
Configuration data is stored per alias if you use the same table with multiple aliases you will need to set configuration multiple times.
Getting instances
You can fetch instances out of the registry using get(). One instance is stored per alias. Once an alias is populated the same instance will always be returned. This is used to make the ORM use less memory and help make cyclic references easier to solve.
$table = TableRegistry::get('Users', $config);
Property Summary
-
$_config protected static
array
Configuration for aliases.
-
$_fallbacked protected static
array
Contains a list of Table objects that were created out of the built-in Table class. The list is indexed by table alias
-
$_instances protected static
array
Instances that belong to the registry.
-
$_options protected static
array
Contains a list of options that were passed to get() method.
Method Summary
-
clear() public static
Clears the registry of configuration and instances.
-
config() public static
Stores a list of options to be used when instantiating an object with a matching alias.
-
exists() public static
Check to see if an instance exists in the registry.
-
genericInstances() public static
Returns the list of tables that were created by this registry that could not be instantiated from a specific subclass. This method is useful for debugging common mistakes when setting up associations or created new table classes.
-
get() public static
Get a table instance from the registry.
-
remove() public static
Removes an instance from the registry.
-
set() public static
Set an instance.
Method Detail
clear() ¶ public static
clear(): void
Clears the registry of configuration and instances.
Returns
void
config() ¶ public static
config(string|null $alias = null, array|null $options = null): array
Stores a list of options to be used when instantiating an object with a matching alias.
The options that can be stored are those that are recognized by get()
If second argument is omitted, it will return the current settings
for $alias.
If no arguments are passed it will return the full configuration array for all aliases
Parameters
-
string|null
$alias optional Name of the alias
-
array|null
$options optional list of options for the alias
Returns
array
Throws
RuntimeException
When you attempt to configure an existing table instance.
exists() ¶ public static
exists(string $alias): bool
Check to see if an instance exists in the registry.
Parameters
-
string
$alias The alias to check for.
Returns
bool
genericInstances() ¶ public static
genericInstances(): array
Returns the list of tables that were created by this registry that could not be instantiated from a specific subclass. This method is useful for debugging common mistakes when setting up associations or created new table classes.
Returns
array
get() ¶ public static
get(string $alias, array $options = []): Cake\ORM\Table
Get a table instance from the registry.
Tables are only created once until the registry is flushed. This means that aliases must be unique across your application. This is important because table associations are resolved at runtime and cyclic references need to be handled correctly.
The options that can be passed are the same as in Table::__construct()
, but the
key className
is also recognized.
If $options does not contain className
CakePHP will attempt to construct the
class name based on the alias. For example 'Users' would result in
App\Model\Table\UsersTable
being attempted. If this class does not exist,
then the default Cake\ORM\Table
class will be used. By setting the className
option you can define the specific class to use. This className can
use a plugin short class reference.
If you use a $name
that uses plugin syntax only the name part will be used as
key in the registry. This means that if two plugins, or a plugin and app provide
the same alias, the registry will only store the first instance.
If no table
option is passed, the table name will be the underscored version
of the provided $alias.
If no connection
option is passed the table's defaultConnectionName() method
will be called to get the default connection name to use.
Parameters
-
string
$alias The alias name you want to get.
-
array
$options optional The options you want to build the table with. If a table has already been loaded the options will be ignored.
Returns
Cake\ORM\Table
Throws
RuntimeException
When you try to configure an alias that already exists.
remove() ¶ public static
remove(string $alias): void
Removes an instance from the registry.
Parameters
-
string
$alias The alias to remove.
Returns
void
set() ¶ public static
set(string $alias, Cake\ORM\Table $object): Cake\ORM\Table
Set an instance.
Parameters
-
string
$alias The alias to set.
-
Cake\ORM\Table
$object The table to set.
Returns
Cake\ORM\Table