Class TableLocator
Provides a default registry/factory for Table objects.
Properties summary
- $_config protected
arrayConfiguration for aliases.
- $_fallbacked protected
\Cake\ORM\Table[]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
\Cake\ORM\Table[]Instances that belong to the registry.
- $locations protected
arrayContains a list of locations where table classes should be looked for.
- $options protected
arrayContains a list of options that were passed to get() method.
Method Summary
- 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.
- getConfig() public
Returns configuration for an alias or the full configuration array for all aliases.
- setConfig() public
Stores a list of options to be used when instantiating an object with a matching alias.
Method Detail
__construct() public
__construct(?array $locations)
Constructor.
Parameters
-
array|null$locations optional Locations where tables should be looked for. If none provided, the default
Model\Tableunder your app's namespace is used.
_create() protected
_create(array $options)
Wrapper for creating table instances
Parameters
-
array$options The alias to check for.
Returns
\Cake\ORM\Table_getClassName() protected
_getClassName(string $alias, array $options)
Gets the table class name.
Parameters
-
string$alias The alias name you want to get. Should be in CamelCase format.
-
array$options optional Table options array.
Returns
string|nulladdLocation() public
addLocation(string $location)
Adds a location where tables should be looked for.
Parameters
-
string$location Location to add.
Returns
$thisclear() public
clear()
Clears the registry of configuration and instances.
createInstance() protected
createInstance(string $alias, array $options)
Create an instance of a given classname.
Parameters
-
string$alias Repository alias.
-
array$options The options you want to build the instance with.
Returns
\Cake\Datasource\RepositoryInterfaceexists() public
exists(string $alias)
Check to see if an instance exists in the registry.
Parameters
-
string$alias The alias to check for.
Returns
boolgenericInstances() public
genericInstances()
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
\Cake\ORM\Table[]get() public
get(string $alias, array $options)
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
-
classNameDefine 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\UsersTablebeing used. If this class does not exist, then the defaultCake\ORM\Tableclass will be used. By setting theclassNameoption you can define the specific class to use. The className option supports plugin short class references {@link \Cake\Core\App::shortName()}. -
tableDefine the table name to use. If undefined, this option will default to the underscored version of the alias name. -
connectionInject the specific connection object to use. If this option andconnectionNameare undefined, The table class'defaultConnectionName()method will be invoked to fetch the connection name. -
connectionNameDefine the connection name to use. The named connection will be fetched from {@link \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. Should be in CamelCase format.
-
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\TableThrows
RuntimeExceptionWhen you try to configure an alias that already exists.
getConfig() public
getConfig(?string $alias)
Returns configuration for an alias or the full configuration array for all aliases.
Parameters
-
string|null$alias optional Alias to get config for, null for complete config.
Returns
arrayThe config data.
remove() public
remove(string $alias)
Removes an repository instance from the registry.
Parameters
-
string$alias The alias to remove.
set() public
set(string $alias, \Cake\Datasource\RepositoryInterface $repository)
Set a Table instance.
Parameters
-
string$alias The alias to set.
-
\Cake\ORM\Table$repository The Table to set.
Returns
\Cake\ORM\TablesetConfig() public
setConfig(mixed $alias, mixed $options)
Stores a list of options to be used when instantiating an object with a matching alias.
Parameters
-
string|array$alias Name of the alias or array to completely overwrite current config.
-
array|null$options optional list of options for the alias
Returns
$thisThrows
RuntimeExceptionWhen you attempt to configure an existing table instance.
Property Detail
$_config protected
Configuration for aliases.
Type
array$_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
\Cake\ORM\Table[]$instances protected
Instances that belong to the registry.
Type
\Cake\ORM\Table[]$locations protected
Contains a list of locations where table classes should be looked for.
Type
array$options protected
Contains a list of options that were passed to get() method.
Type
array
© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/4.1/class-Cake.ORM.Locator.TableLocator.html