TimestampBehavior
extends Behavior
in package
Class TimestampBehavior
Table of Contents
Properties
- $_config : array<string, mixed>
- Runtime config
- $_configInitialized : bool
- Whether the config property has already been configured with defaults
- $_defaultConfig : array<string, mixed>
- Default config
- $_reflectionCache : array<string, array<string|int, mixed>>
- Reflection method cache for behaviors.
- $_table : Table
- Table instance.
- $_ts : FrozenTime|null
- Current timestamp
Methods
- __construct() : mixed
- Constructor
- configShallow() : $this
- Merge provided config with existing config. Unlike `config()` which does a recursive merge for nested keys, this method does a simple merge.
- getConfig() : mixed
- Returns the config.
- getConfigOrFail() : mixed
- Returns the config for this specific key.
- getTable() : Table
- Get the table instance this behavior is bound to.
- handleEvent() : true
- There is only one event handler, it can be configured to be called for any event
- implementedEvents() : array<string, mixed>
- implementedEvents
- implementedFinders() : array<string|int, mixed>
- implementedFinders
- implementedMethods() : array<string|int, mixed>
- implementedMethods
- initialize() : void
- Initialize hook
- setConfig() : $this
- Sets the config.
- table() : Table
- Get the table instance this behavior is bound to.
- timestamp() : FrozenTime
- Get or set the timestamp to be used
- touch() : bool
- Touch an entity
- verifyConfig() : void
- verifyConfig
- _configDelete() : void
- Deletes a single config key.
- _configRead() : mixed
- Reads a config key.
- _configWrite() : void
- Writes a config key.
- _reflectionCache() : array<string|int, mixed>
- Gets the methods implemented by this behavior
- _resolveMethodAliases() : array<string|int, mixed>
- Removes aliased methods that would otherwise be duplicated by userland configuration.
- _updateField() : void
- Update a field, if it hasn't been updated already
Properties
$_config
Runtime config
protected
array<string, mixed>
$_config
= []
$_configInitialized
Whether the config property has already been configured with defaults
protected
bool
$_configInitialized
= false
$_defaultConfig
Default config
protected
array<string, mixed>
$_defaultConfig
= ['implementedFinders' => [], 'implementedMethods' => ['timestamp' => 'timestamp', 'touch' => 'touch'], 'events' => ['Model.beforeSave' => ['created' => 'new', 'modified' => 'always']], 'refreshTimestamp' => true]
These are merged with user-provided config when the behavior is used.
events - an event-name keyed array of which fields to update, and when, for a given event possible values for when a field will be updated are "always", "new" or "existing", to set the field value always, only when a new record or only when an existing record.
refreshTimestamp - if true (the default) the timestamp used will be the current time when the code is executed, to set to an explicit date time value - set refreshTimetamp to false and call setTimestamp() on the behavior class before use.
$_reflectionCache
Reflection method cache for behaviors.
protected
static array<string, array<string|int, mixed>>
$_reflectionCache
= []
Stores the reflected method + finder methods per class. This prevents reflecting the same class multiple times in a single process.
$_table
Table instance.
protected
Table
$_table
$_ts
Current timestamp
protected
FrozenTime|null
$_ts
Methods
__construct()
Constructor
public
__construct(Table $table[, array<string, mixed> $config = [] ]) : mixed
Merges config with the default and store in the config property
Parameters
- $table : Table
-
The table this behavior is attached to.
- $config : array<string, mixed> = []
-
The config for this behavior.
configShallow()
Merge provided config with existing config. Unlike `config()` which does a recursive merge for nested keys, this method does a simple merge.
public
configShallow(array<string, mixed>|string $key[, mixed|null $value = null ]) : $this
Setting a specific value:
$this->configShallow('key', $value);
Setting a nested value:
$this->configShallow('some.nested.key', $value);
Updating multiple config settings at the same time:
$this->configShallow(['one' => 'value', 'another' => 'value']);
Parameters
- $key : array<string, mixed>|string
-
The key to set, or a complete array of configs.
- $value : mixed|null = null
-
The value to set.
Return values
$thisgetConfig()
Returns the config.
public
getConfig([string|null $key = null ][, mixed $default = null ]) : mixed
Usage
Reading the whole config:
$this->getConfig();
Reading a specific value:
$this->getConfig('key');
Reading a nested value:
$this->getConfig('some.nested.key');
Reading with default value:
$this->getConfig('some-key', 'default-value');
Parameters
- $key : string|null = null
-
The key to get or null for the whole config.
- $default : mixed = null
-
The return value when the key does not exist.
Return values
mixed —Configuration data at the named key or null if the key does not exist.
getConfigOrFail()
Returns the config for this specific key.
public
getConfigOrFail(string $key) : mixed
The config value for this key must exist, it can never be null.
Parameters
- $key : string
-
The key to get.
Tags
Return values
mixed —Configuration data at the named key
getTable()
Get the table instance this behavior is bound to.
public
getTable() : Table
Use table() instead.
Return values
Table —The bound table instance.
handleEvent()
There is only one event handler, it can be configured to be called for any event
public
handleEvent(EventInterface $event, EntityInterface $entity) : true
Parameters
- $event : EventInterface
-
Event instance.
- $entity : EntityInterface
-
Entity instance.
Tags
Return values
true —Returns true irrespective of the behavior logic, the save will not be prevented.
implementedEvents()
implementedEvents
public
implementedEvents() : array<string, mixed>
The implemented events of this behavior depend on configuration
Return values
array<string, mixed>implementedFinders()
implementedFinders
public
implementedFinders() : array<string|int, mixed>
Provides an alias->methodname map of which finders a behavior implements. Example:
[
'this' => 'findThis',
'alias' => 'findMethodName'
]
With the above example, a call to $table->find('this')
will call $behavior->findThis()
and a call to $table->find('alias')
will call $behavior->findMethodName()
It is recommended, though not required, to define implementedFinders in the config property of child classes such that it is not necessary to use reflections to derive the available method list. See core behaviors for examples
Tags
Return values
array<string|int, mixed>implementedMethods()
implementedMethods
public
implementedMethods() : array<string|int, mixed>
Provides an alias->methodname map of which methods a behavior implements. Example:
[
'method' => 'method',
'aliasedMethod' => 'somethingElse'
]
With the above example, a call to $table->method()
will call $behavior->method()
and a call to $table->aliasedMethod()
will call $behavior->somethingElse()
It is recommended, though not required, to define implementedFinders in the config property of child classes such that it is not necessary to use reflections to derive the available method list. See core behaviors for examples
Tags
Return values
array<string|int, mixed>initialize()
Initialize hook
public
initialize(array<string, mixed> $config) : void
If events are specified - do not merge them with existing events, overwrite the events to listen on
Parameters
- $config : array<string, mixed>
-
The config for this behavior.
setConfig()
Sets the config.
public
setConfig(array<string, mixed>|string $key[, mixed|null $value = null ][, bool $merge = true ]) : $this
Usage
Setting a specific value:
$this->setConfig('key', $value);
Setting a nested value:
$this->setConfig('some.nested.key', $value);
Updating multiple config settings at the same time:
$this->setConfig(['one' => 'value', 'another' => 'value']);
Parameters
- $key : array<string, mixed>|string
-
The key to set, or a complete array of configs.
- $value : mixed|null = null
-
The value to set.
- $merge : bool = true
-
Whether to recursively merge or overwrite existing config, defaults to true.
Tags
Return values
$thistable()
Get the table instance this behavior is bound to.
public
table() : Table
Return values
Table —The bound table instance.
timestamp()
Get or set the timestamp to be used
public
timestamp([DateTimeInterface|null $ts = null ][, bool $refreshTimestamp = false ]) : FrozenTime
Set the timestamp to the given DateTime object, or if not passed a new DateTime object
If an explicit date time is passed, the config option refreshTimestamp
is
automatically set to false.
Parameters
- $ts : DateTimeInterface|null = null
-
Timestamp
- $refreshTimestamp : bool = false
-
If true timestamp is refreshed.
Return values
FrozenTimetouch()
Touch an entity
public
touch(EntityInterface $entity[, string $eventName = 'Model.beforeSave' ]) : bool
Bumps timestamp fields for an entity. For any fields configured to be updated "always" or "existing", update the timestamp value. This method will overwrite any pre-existing value.
Parameters
- $entity : EntityInterface
-
Entity instance.
- $eventName : string = 'Model.beforeSave'
-
Event name.
Return values
bool —true if a field is updated, false if no action performed
verifyConfig()
verifyConfig
public
verifyConfig() : void
Checks that implemented keys contain values pointing at callable.
Tags
_configDelete()
Deletes a single config key.
protected
_configDelete(string $key) : void
Parameters
- $key : string
-
Key to delete.
Tags
_configRead()
Reads a config key.
protected
_configRead(string|null $key) : mixed
Parameters
- $key : string|null
-
Key to read.
_configWrite()
Writes a config key.
protected
_configWrite(array<string, mixed>|string $key, mixed $value[, string|bool $merge = false ]) : void
Parameters
- $key : array<string, mixed>|string
-
Key to write to.
- $value : mixed
-
Value to write.
- $merge : string|bool = false
-
True to merge recursively, 'shallow' for simple merge, false to overwrite, defaults to false.
Tags
_reflectionCache()
Gets the methods implemented by this behavior
protected
_reflectionCache() : array<string|int, mixed>
Uses the implementedEvents() method to exclude callback methods.
Methods starting with _
will be ignored, as will methods
declared on Cake\ORM\Behavior
Tags
Return values
array<string|int, mixed>_resolveMethodAliases()
Removes aliased methods that would otherwise be duplicated by userland configuration.
protected
_resolveMethodAliases(string $key, array<string, mixed> $defaults, array<string, mixed> $config) : array<string|int, mixed>
Parameters
- $key : string
-
The key to filter.
- $defaults : array<string, mixed>
-
The default method mappings.
- $config : array<string, mixed>
-
The customized method mappings.
Return values
array<string|int, mixed> —A de-duped list of config data.
_updateField()
Update a field, if it hasn't been updated already
protected
_updateField(EntityInterface $entity, string $field, bool $refreshTimestamp) : void
Parameters
- $entity : EntityInterface
-
Entity instance.
- $field : string
-
Field name
- $refreshTimestamp : bool
-
Whether to refresh timestamp.