Fr3nch13/CakePHP Utilities

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

$_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.

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
$this

getConfig()

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
throws
InvalidArgumentException
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
throws
UnexpectedValueException

if a field's when value is misdefined

throws
UnexpectedValueException

When the value for an event is not 'always', 'new' or 'existing'

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
throws
ReflectionException
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
throws
ReflectionException
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
throws
CakeException

When trying to set a key that is invalid.

Return values
$this

table()

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
FrozenTime

touch()

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
throws
CakeException

if config are invalid

_configDelete()

Deletes a single config key.

protected _configDelete(string $key) : void
Parameters
$key : string

Key to delete.

Tags
throws
CakeException

if attempting to clobber existing config

_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
throws
CakeException

if attempting to clobber existing config

_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
throws
ReflectionException
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.


        
On this page

Search results