KMP PHP API Reference

AppSettingsTable extends BaseTable
in package

AppSettings Model

Table of Contents

Constants

CACHE_GROUPS_TO_CLEAR  : array<string|int, string> = []
CACHES_TO_CLEAR  : array<string|int, array{string, string}> = []
ID_CACHES_TO_CLEAR  : array<string|int, array{string, string}> = []
ALL_SETTINGS_CACHE_KEY  : mixed = 'app_settings_all'
FILE_MIME_TYPES  : mixed = ['application/pdf' => 'pdf', 'image/gif' => 'gi...
IMAGE_MIME_TYPES  : mixed = ['image/gif' => 'gif', 'image/jpeg' => 'jpg', '...
MAX_ASSET_BYTES  : mixed = 2097152
PASSWORD_VALUE_PREFIX  : mixed = 'enc:v1:'

Properties

$sensitiveSettingRequestCache  : array<string, mixed>
Request-local sensitive settings keyed by tenant-aware cache key.
$settingsPayloadRequestCache  : array<string, array{values: array, raw: array}>
Request-local all-settings payload keyed by tenant-aware cache key.

Methods

addBranchScopeQuery()  : SelectQuery
Add branch-based data scoping to a query.
afterDelete()  : void
Clear app setting caches after direct deletes.
afterSave()  : void
Clear app setting caches after direct saves.
assetValueFromUpload()  : string
Build a safe database asset payload from an uploaded app setting file.
buildRules()  : RulesChecker
Define application-level rules.
clearRequestCaches()  : void
Clear request-local setting memoization.
delete()  : bool
Delete.
deleteAppSetting()  : bool
Delete app setting.
deleteMany()  : iterable<string|int, AppSetting>|ResultSetInterface<string|int, AppSetting>|false
deleteManyOrFail()  : iterable<string|int, AppSetting>|ResultSetInterface<string|int, AppSetting>
deleteSetting()  : bool
Update an app setting and cache the new value.
findOrCreate()  : AppSetting
get()  : AppSetting
getAllAppSettingsStartWith()  : array<string|int, mixed>
Get all app settings start with.
getAppSetting()  : mixed
Get app setting.
getAssetPayload()  : array<string, mixed>|null
Read a decoded app setting asset payload for public delivery.
getSetting()  : mixed
Get an app setting by name, using cache.
initialize()  : void
Initialize method
newEmptyEntity()  : AppSetting
newEntities()  : array<string|int, AppSetting>
newEntity()  : AppSetting
patchEntities()  : array<string|int, AppSetting>
patchEntity()  : AppSetting
save()  : EntityInterface|false
Save.
saveMany()  : iterable<string|int, AppSetting>|ResultSetInterface<string|int, AppSetting>|false
saveManyOrFail()  : iterable<string|int, AppSetting>|ResultSetInterface<string|int, AppSetting>
saveOrFail()  : AppSetting
setAppSetting()  : bool
Set app setting.
updateSetting()  : bool
Update an app setting and cache the new value.
validationDefault()  : Validator
Default validation rules.
logImpersonationAction()  : void
Record impersonated writes to audit log table.
setJsonColumnTypesIfPresent()  : void
Mark JSON columns when the table schema is available.
allowedAssetTypes()  : array<string, string>
Get allowed MIME types for a public asset setting type.
allSettingsCacheKey()  : string
Build a tenant-safe cache key for all non-sensitive settings.
assetCacheKey()  : string
Build a tenant-safe cache key for decoded asset payloads.
assetFilename()  : string
Build a safe filename with the detected extension.
assetUrl()  : string
Build a public URL for a stored app setting asset.
assignSettingValues()  : void
Assign mutable setting fields before saving.
cacheKey()  : string
Build a tenant-safe cache key for a setting name.
clearSettingCaches()  : void
Clear tenant-scoped caches affected by setting mutation.
decodeAssetPayload()  : array<string, mixed>|null
Decode and validate a stored database asset payload.
detectMimeType()  : string
Detect MIME type from file content.
getCachedSettingsPayload()  : array{values: array, raw: array}
Read all non-sensitive settings from cache or database.
getPasswordEncryptionKey()  : string
Get password encryption key.
isAssetType()  : bool
Check if a setting type is a stored public asset.
isSensitiveSetting()  : bool
Check if sensitive setting.
isUniqueSettingConflict()  : bool
Detect duplicate-name conflicts from read-then-insert setting creation.
resolveValueForRead()  : mixed
Resolve value for read.
resolveValueForWrite()  : mixed
Resolve value for write.
unsupportedAssetMessage()  : string
Build unsupported asset message.
uploadErrorMessage()  : string
Build upload error message.

Constants

CACHE_GROUPS_TO_CLEAR

protected array<string|int, string> CACHE_GROUPS_TO_CLEAR = []

Cache groups to clear entirely on save

CACHES_TO_CLEAR

protected array<string|int, array{string, string}> CACHES_TO_CLEAR = []

Static cache entries to clear on save

ID_CACHES_TO_CLEAR

protected array<string|int, array{string, string}> ID_CACHES_TO_CLEAR = []

Entity-ID cache prefixes to clear on save

ALL_SETTINGS_CACHE_KEY

private mixed ALL_SETTINGS_CACHE_KEY = 'app_settings_all'

FILE_MIME_TYPES

private mixed FILE_MIME_TYPES = ['application/pdf' => 'pdf', 'image/gif' => 'gif', 'image/jpeg' => 'jpg', 'image/png' => 'png', 'image/webp' => 'webp', 'text/plain' => 'txt']

IMAGE_MIME_TYPES

private mixed IMAGE_MIME_TYPES = ['image/gif' => 'gif', 'image/jpeg' => 'jpg', 'image/png' => 'png', 'image/webp' => 'webp']

Properties

$sensitiveSettingRequestCache

Request-local sensitive settings keyed by tenant-aware cache key.

private static array<string, mixed> $sensitiveSettingRequestCache = []

$settingsPayloadRequestCache

Request-local all-settings payload keyed by tenant-aware cache key.

private static array<string, array{values: array, raw: array}> $settingsPayloadRequestCache = []

Methods

addBranchScopeQuery()

Add branch-based data scoping to a query.

public addBranchScopeQuery(SelectQuery $query, array<string|int, int> $branchIDs) : SelectQuery

Child tables should override for custom branch relationships.

Parameters
$query : SelectQuery

The query to modify

$branchIDs : array<string|int, int>

Authorized branch IDs

Return values
SelectQuery

Query with branch filtering

afterDelete()

Clear app setting caches after direct deletes.

public afterDelete(mixed $event, EntityInterface $entity, mixed $options) : void
Parameters
$event : mixed

Event

$entity : EntityInterface

Deleted setting

$options : mixed

Delete options

afterSave()

Clear app setting caches after direct saves.

public afterSave(mixed $event, EntityInterface $entity, mixed $options) : void
Parameters
$event : mixed

Event

$entity : EntityInterface

Saved setting

$options : mixed

Save options

assetValueFromUpload()

Build a safe database asset payload from an uploaded app setting file.

public assetValueFromUpload(string $type, UploadedFileInterface $file) : string
Parameters
$type : string

App setting type: image or file

$file : UploadedFileInterface

Uploaded file

Return values
string

JSON payload for app_settings.value

buildRules()

Define application-level rules.

public buildRules(RulesChecker $rules) : RulesChecker
Parameters
$rules : RulesChecker
Return values
RulesChecker

clearRequestCaches()

Clear request-local setting memoization.

public static clearRequestCaches() : void

Useful for tests and long-running workers that need to simulate a fresh request after directly manipulating the shared cache or database.

delete()

Delete.

public delete(EntityInterface $entity[, array<string|int, mixed> $options = [] ]) : bool
Parameters
$entity : EntityInterface
$options : array<string|int, mixed> = []
Return values
bool

deleteAppSetting()

Delete app setting.

public deleteAppSetting(mixed $key[, bool $forceDelete = false ]) : bool
Parameters
$key : mixed
$forceDelete : bool = false
Return values
bool

deleteMany()

public deleteMany(iterable<string|int, mixed> $entities[, array<string|int, mixed> $options = = '[]' ]) : iterable<string|int, AppSetting>|ResultSetInterface<string|int, AppSetting>|false
Parameters
$entities : iterable<string|int, mixed>
$options : array<string|int, mixed> = = '[]'
Return values
iterable<string|int, AppSetting>|ResultSetInterface<string|int, AppSetting>|false

deleteManyOrFail()

public deleteManyOrFail(iterable<string|int, mixed> $entities[, array<string|int, mixed> $options = = '[]' ]) : iterable<string|int, AppSetting>|ResultSetInterface<string|int, AppSetting>
Parameters
$entities : iterable<string|int, mixed>
$options : array<string|int, mixed> = = '[]'
Return values
iterable<string|int, AppSetting>|ResultSetInterface<string|int, AppSetting>

deleteSetting()

Update an app setting and cache the new value.

public deleteSetting(string $name[, bool $forceDelete = false ]) : bool
Parameters
$name : string

The name of the setting.

$forceDelete : bool = false
Return values
bool

True on success, false on failure.

findOrCreate()

public findOrCreate(mixed $search[, callable|null $callback = = 'null' ][, array<string|int, mixed> $options = = '[]' ]) : AppSetting
Parameters
$search : mixed
$callback : callable|null = = 'null'
$options : array<string|int, mixed> = = '[]'
Return values
AppSetting

get()

public get(mixed $primaryKey[, array<string|int, mixed>|string $finder = = '\'all\'' ][, CacheInterface|string|null $cache = = 'null' ][, Closure|string|null $cacheKey = = 'null' ], mixed ...$args) : AppSetting
Parameters
$primaryKey : mixed
$finder : array<string|int, mixed>|string = = '\'all\''
$cache : CacheInterface|string|null = = 'null'
$cacheKey : Closure|string|null = = 'null'
$args : mixed
Return values
AppSetting

getAllAppSettingsStartWith()

Get all app settings start with.

public getAllAppSettingsStartWith(mixed $key) : array<string|int, mixed>
Parameters
$key : mixed
Return values
array<string|int, mixed>

getAppSetting()

Get app setting.

public getAppSetting(mixed $key[, mixed $default = null ][, mixed $type = null ][, mixed $required = false ]) : mixed
Parameters
$key : mixed
$default : mixed = null
$type : mixed = null
$required : mixed = false

getAssetPayload()

Read a decoded app setting asset payload for public delivery.

public getAssetPayload(string $name) : array<string, mixed>|null
Parameters
$name : string

App setting name

Return values
array<string, mixed>|null

getSetting()

Get an app setting by name, using cache.

public getSetting(string $name) : mixed
Parameters
$name : string

The name of the setting.

Return values
mixed

The value of the setting.

initialize()

Initialize method

public initialize(array<string, mixed> $config) : void
Parameters
$config : array<string, mixed>

The configuration for the Table.

newEntities()

public newEntities(array<string|int, mixed> $data[, array<string|int, mixed> $options = = '[]' ]) : array<string|int, AppSetting>
Parameters
$data : array<string|int, mixed>
$options : array<string|int, mixed> = = '[]'
Return values
array<string|int, AppSetting>

newEntity()

public newEntity(array<string|int, mixed> $data[, array<string|int, mixed> $options = = '[]' ]) : AppSetting
Parameters
$data : array<string|int, mixed>
$options : array<string|int, mixed> = = '[]'
Return values
AppSetting

patchEntities()

public patchEntities(iterable<string|int, mixed> $entities, array<string|int, mixed> $data[, array<string|int, mixed> $options = = '[]' ]) : array<string|int, AppSetting>
Parameters
$entities : iterable<string|int, mixed>
$data : array<string|int, mixed>
$options : array<string|int, mixed> = = '[]'
Return values
array<string|int, AppSetting>

patchEntity()

public patchEntity(EntityInterface $entity, array<string|int, mixed> $data[, array<string|int, mixed> $options = = '[]' ]) : AppSetting
Parameters
$entity : EntityInterface
$data : array<string|int, mixed>
$options : array<string|int, mixed> = = '[]'
Return values
AppSetting

save()

Save.

public save(EntityInterface $entity[, array<string|int, mixed> $options = [] ]) : EntityInterface|false
Parameters
$entity : EntityInterface
$options : array<string|int, mixed> = []
Return values
EntityInterface|false

saveMany()

public saveMany(iterable<string|int, mixed> $entities[, array<string|int, mixed> $options = = '[]' ]) : iterable<string|int, AppSetting>|ResultSetInterface<string|int, AppSetting>|false
Parameters
$entities : iterable<string|int, mixed>
$options : array<string|int, mixed> = = '[]'
Return values
iterable<string|int, AppSetting>|ResultSetInterface<string|int, AppSetting>|false

saveManyOrFail()

public saveManyOrFail(iterable<string|int, mixed> $entities[, array<string|int, mixed> $options = = '[]' ]) : iterable<string|int, AppSetting>|ResultSetInterface<string|int, AppSetting>
Parameters
$entities : iterable<string|int, mixed>
$options : array<string|int, mixed> = = '[]'
Return values
iterable<string|int, AppSetting>|ResultSetInterface<string|int, AppSetting>

saveOrFail()

public saveOrFail(EntityInterface $entity[, array<string|int, mixed> $options = = '[]' ]) : AppSetting
Parameters
$entity : EntityInterface
$options : array<string|int, mixed> = = '[]'
Return values
AppSetting

setAppSetting()

Set app setting.

public setAppSetting(mixed $key, mixed $value[, mixed $type = null ][, mixed $required = false ]) : bool
Parameters
$key : mixed
$value : mixed
$type : mixed = null
$required : mixed = false
Return values
bool

updateSetting()

Update an app setting and cache the new value.

public updateSetting(string $name, string|null $type, mixed $value[, mixed $required = false ]) : bool
Parameters
$name : string

The name of the setting.

$type : string|null

The new value of the setting.

$value : mixed

The new value of the setting.

$required : mixed = false
Return values
bool

True on success, false on failure.

validationDefault()

Default validation rules.

public validationDefault(Validator $validator) : Validator
Parameters
$validator : Validator

Validator instance.

Return values
Validator

logImpersonationAction()

Record impersonated writes to audit log table.

protected logImpersonationAction(string $defaultOperation, EntityInterface $entity) : void
Parameters
$defaultOperation : string

Operation fallback (save/delete)

$entity : EntityInterface

Affected entity

setJsonColumnTypesIfPresent()

Mark JSON columns when the table schema is available.

protected setJsonColumnTypesIfPresent(array<int, string> $columns) : void

Some reset/migration flows instantiate table classes before every table exists. JSON type mapping is optional metadata, so skip it until the schema can be described instead of failing application bootstrap.

Parameters
$columns : array<int, string>

JSON column names.

allowedAssetTypes()

Get allowed MIME types for a public asset setting type.

private allowedAssetTypes(string $type) : array<string, string>
Parameters
$type : string
Return values
array<string, string>

allSettingsCacheKey()

Build a tenant-safe cache key for all non-sensitive settings.

private allSettingsCacheKey() : string
Return values
string

assetCacheKey()

Build a tenant-safe cache key for decoded asset payloads.

private assetCacheKey(string $name) : string
Parameters
$name : string
Return values
string

assetFilename()

Build a safe filename with the detected extension.

private assetFilename(string $clientFilename, string $extension) : string
Parameters
$clientFilename : string
$extension : string
Return values
string

assetUrl()

Build a public URL for a stored app setting asset.

private assetUrl(string $name, array<string, mixed> $payload) : string
Parameters
$name : string

App setting name

$payload : array<string, mixed>

Decoded asset payload

Return values
string

assignSettingValues()

Assign mutable setting fields before saving.

private assignSettingValues(EntityInterface $setting, string $type, string|null $encodedValue, bool $required) : void
Parameters
$setting : EntityInterface

App setting entity

$type : string

Effective setting type

$encodedValue : string|null

Encoded value to persist

$required : bool

Required flag

cacheKey()

Build a tenant-safe cache key for a setting name.

private cacheKey(string $name) : string
Parameters
$name : string
Return values
string

clearSettingCaches()

Clear tenant-scoped caches affected by setting mutation.

private clearSettingCaches([string|null $name = null ]) : void
Parameters
$name : string|null = null

decodeAssetPayload()

Decode and validate a stored database asset payload.

private decodeAssetPayload(mixed $value) : array<string, mixed>|null
Parameters
$value : mixed
Return values
array<string, mixed>|null

detectMimeType()

Detect MIME type from file content.

private detectMimeType(string $contents) : string
Parameters
$contents : string
Return values
string

getCachedSettingsPayload()

Read all non-sensitive settings from cache or database.

private getCachedSettingsPayload() : array{values: array, raw: array}
Return values
array{values: array, raw: array}

getPasswordEncryptionKey()

Get password encryption key.

private getPasswordEncryptionKey() : string
Return values
string

isAssetType()

Check if a setting type is a stored public asset.

private isAssetType(string $type) : bool
Parameters
$type : string
Return values
bool

isSensitiveSetting()

Check if sensitive setting.

private isSensitiveSetting(string $name) : bool
Parameters
$name : string
Return values
bool

isUniqueSettingConflict()

Detect duplicate-name conflicts from read-then-insert setting creation.

private isUniqueSettingConflict(DatabaseException $exception) : bool
Parameters
$exception : DatabaseException

Database exception

Return values
bool

resolveValueForRead()

Resolve value for read.

private resolveValueForRead(string $type, mixed $value[, string|null $name = null ]) : mixed
Parameters
$type : string
$value : mixed
$name : string|null = null

resolveValueForWrite()

Resolve value for write.

private resolveValueForWrite(string $type, mixed $value, bool $settingExists) : mixed
Parameters
$type : string
$value : mixed
$settingExists : bool

unsupportedAssetMessage()

Build unsupported asset message.

private unsupportedAssetMessage(string $type) : string
Parameters
$type : string
Return values
string

uploadErrorMessage()

Build upload error message.

private uploadErrorMessage(int $errorCode) : string
Parameters
$errorCode : int
Return values
string
On this page

Search results