Class TableLocator
Provides a default registry/factory for Table objects.
Property Summary
-
$_config protected
array
Configuration for aliases.
-
$_fallbacked protected
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
array
Instances that belong to the registry.
-
$_options protected
array
Contains a list of options that were passed to get() method.
Method Summary
-
_create() protected
Wrapper for creating table instances
-
_getClassName() protected
Gets the table class name.
-
clear() public
Clears the registry of configuration and instances.
-
config() public
Stores a list of options to be used when instantiating an object with a matching alias.
-
exists() public
Check to see if an instance exists in the registry.
-
genericInstances() public
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
Get a table instance from the registry.
-
remove() public
Removes an instance from the registry.
-
set() public
Set an instance.
Method Detail
_create() ¶ protected
_create(array $options): Cake\ORM\Table
Wrapper for creating table instances
Parameters
-
array
$options The alias to check for.
Returns
Cake\ORM\Table
_getClassName() ¶ protected
_getClassName(string $alias, array $options = []): string
Gets the table class name.
Parameters
-
string
$alias The alias name you want to get.
-
array
$options optional Table options array.
Returns
string
config() ¶ public
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
exists(string $alias): bool
Check to see if an instance exists in the registry.
Parameters
-
string
$alias
Returns
bool
genericInstances() ¶ public
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
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 Cake\ORM\Table::__construct(), but the
className
key is also recognized.
Options
className
Define the specific class name to use. If undefined, CakePHP will generate the class name based on the alias. For example 'Users' would result inApp\Model\Table\UsersTable
being used. If this class does not exist, then the defaultCake\ORM\Table
class will be used. By setting theclassName
option you can define the specific class to use. The className option supports plugin short class references {@link Cake\Core\App::shortName()}.table
Define the table name to use. If undefined, this option will default to the underscored version of the alias name.connection
Inject the specific connection object to use. If this option andconnectionName
are undefined, The table class'defaultConnectionName()
method will be invoked to fetch the connection name.connectionName
Define the connection name to use. The named connection will be fetched from Cake\Datasource\ConnectionManager.
Note If your $alias
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.
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
remove(string $alias): void
Removes an instance from the registry.
Parameters
-
string
$alias
Returns
void
set() ¶ public
set(string $alias, Cake\ORM\Table $object): Cake\ORM\Table
Set an instance.
Parameters
-
string
$alias -
Cake\ORM\Table
$object
Returns
Cake\ORM\Table
Property Detail
$_fallbacked ¶ protected
Contains a list of Table objects that were created out of the built-in Table class. The list is indexed by table alias
Type
array