RequestHandler
extends AbstractHandler
in package
Debug request handler class
Tags
Table of Contents
Constants
- DEFAULT_REDACTED_KEYS = ['pass', 'pwd', 'secret', 'token', 'apikey', 'accesstoken', 'refreshtoken', 'clientsecret', 'privatekey', 'authorization', 'auth', 'cookie', 'csrf', 'xsrf', 'sessionid', 'creditcard', 'cardnumber', 'cvv', 'cvc', 'ssn', 'pin']
- Default keys (case-insensitive, separator-insensitive substring match) whose values get redacted
- REDACTED_VALUE = '[REDACTED]'
- Value substituted in for anything matched by $redactedKeys or held in $_COOKIE/$_SESSION
Properties
- $data : array<string|int, mixed>
- Data
- $elapsed : float|null
- Elapsed time
- $end : float|null
- End time
- $logger : LoggerInterface|null
- Logger object
- $loggingParams : array<string|int, mixed>
- Logging params
- $name : string|null
- Name of handler
- $normalizedRedactedKeys : array<string|int, mixed>|null
- Cached, normalized (lowercased, non-alphanumeric stripped) version of $redactedKeys, rebuilt lazily on next use whenever $redactedKeys changes
- $redactedKeys : array<string|int, mixed>
- Keys whose values are redacted when $redactSensitiveData is true
- $redactSensitiveData : bool
- Whether to redact sensitive request data (headers, server/env vars, post/put/patch/parsed data matching $redactedKeys, plus the entirety of $_COOKIE and $_SESSION) before it is returned from prepare() and, in turn, logged or written to storage. Defaults to true so secrets aren't captured in plaintext by default.
- $request : Request|null
- Request
- $start : float|null
- Start time
Methods
- __construct() : mixed
- Constructor
- addRedactedKey() : RequestHandler
- Add a key whose value should be redacted
- getData() : array<string|int, mixed>
- Get data
- getElapsed() : float|null
- Get elapsed
- getEnd() : float|null
- Get end
- getLogger() : LoggerInterface|null
- Get logger
- getLoggingParams() : array<string|int, mixed>
- Get logging params
- getName() : string|null
- Get name
- getRedactedKeys() : array<string|int, mixed>
- Get the keys whose values get redacted
- getRequest() : Request
- Get request
- getStart() : float|null
- Get start
- hasData() : bool
- Has data
- hasElapsed() : bool
- Has elapsed
- hasEnd() : bool
- Has end
- hasLogger() : bool
- Has logger
- hasLoggingParams() : bool
- Has logging parameters
- hasName() : bool
- Has name
- hasRequest() : bool
- Has request
- hasStart() : bool
- Has start
- isRedactingSensitiveData() : bool
- Determine if sensitive request data is being redacted
- log() : void
- Trigger handler logging
- prepare() : array<string|int, mixed>
- Prepare handler data for storage
- prepareMessage() : string
- Prepare handler message
- request() : Request
- Get request (alias)
- setData() : AbstractHandler
- Set data
- setElapsed() : AbstractHandler
- Set elapsed
- setEnd() : AbstractHandler
- Set end
- setLogger() : AbstractHandler
- Set logger
- setLoggingParams() : AbstractHandler
- Set logger
- setName() : AbstractHandler
- Set name
- setRedactedKeys() : RequestHandler
- Set the keys (case-insensitive, separator-insensitive substring match) whose values get redacted
- setRedactSensitiveData() : RequestHandler
- Set whether to redact sensitive request data before it's returned from prepare()
- setRequest() : RequestHandler
- Set request
- setStart() : AbstractHandler
- Set start
- start() : AbstractHandler
- Start
- stop() : AbstractHandler
- Stop
- isRedactedKey() : bool
- Determine if a key matches one of $redactedKeys (case- and separator-insensitive)
- redactAll() : mixed
- Redact every value in a flat array, regardless of key (used for $_COOKIE/$_SESSION, whose contents are treated as sensitive-by-nature)
- redactKeys() : mixed
- Recursively redact array values whose key matches one of $redactedKeys
- resolveLogLevel() : mixed
- Resolve the configured log level, guarding the shared log() preconditions
Constants
DEFAULT_REDACTED_KEYS
Default keys (case-insensitive, separator-insensitive substring match) whose values get redacted
protected
array<string|int, mixed>
DEFAULT_REDACTED_KEYS
= ['pass', 'pwd', 'secret', 'token', 'apikey', 'accesstoken', 'refreshtoken', 'clientsecret', 'privatekey', 'authorization', 'auth', 'cookie', 'csrf', 'xsrf', 'sessionid', 'creditcard', 'cardnumber', 'cvv', 'cvc', 'ssn', 'pin']
REDACTED_VALUE
Value substituted in for anything matched by $redactedKeys or held in $_COOKIE/$_SESSION
protected
string
REDACTED_VALUE
= '[REDACTED]'
Properties
$data
Data
protected
array<string|int, mixed>
$data
= []
$elapsed
Elapsed time
protected
float|null
$elapsed
= null
$end
End time
protected
float|null
$end
= null
$logger
Logger object
protected
LoggerInterface|null
$logger
= null
$loggingParams
Logging params
protected
array<string|int, mixed>
$loggingParams
= []
$name
Name of handler
protected
string|null
$name
= null
$normalizedRedactedKeys
Cached, normalized (lowercased, non-alphanumeric stripped) version of $redactedKeys, rebuilt lazily on next use whenever $redactedKeys changes
protected
array<string|int, mixed>|null
$normalizedRedactedKeys
= null
$redactedKeys
Keys whose values are redacted when $redactSensitiveData is true
protected
array<string|int, mixed>
$redactedKeys
= self::DEFAULT_REDACTED_KEYS
$redactSensitiveData
Whether to redact sensitive request data (headers, server/env vars, post/put/patch/parsed data matching $redactedKeys, plus the entirety of $_COOKIE and $_SESSION) before it is returned from prepare() and, in turn, logged or written to storage. Defaults to true so secrets aren't captured in plaintext by default.
protected
bool
$redactSensitiveData
= true
$request
Request
protected
Request|null
$request
= null
$start
Start time
protected
float|null
$start
= null
Methods
__construct()
Constructor
public
__construct([Request|null $request = null ][, string|null $name = null ][, LoggerInterface|null $logger = null ][, array<string|int, mixed> $loggingParams = [] ]) : mixed
Instantiate a request handler object
Parameters
- $request : Request|null = null
- $name : string|null = null
- $logger : LoggerInterface|null = null
- $loggingParams : array<string|int, mixed> = []
addRedactedKey()
Add a key whose value should be redacted
public
addRedactedKey(string $key) : RequestHandler
Parameters
- $key : string
Return values
RequestHandlergetData()
Get data
public
getData() : array<string|int, mixed>
Return values
array<string|int, mixed>getElapsed()
Get elapsed
public
getElapsed() : float|null
Return values
float|nullgetEnd()
Get end
public
getEnd() : float|null
Return values
float|nullgetLogger()
Get logger
public
getLogger() : LoggerInterface|null
Return values
LoggerInterface|nullgetLoggingParams()
Get logging params
public
getLoggingParams() : array<string|int, mixed>
Return values
array<string|int, mixed>getName()
Get name
public
getName() : string|null
Return values
string|nullgetRedactedKeys()
Get the keys whose values get redacted
public
getRedactedKeys() : array<string|int, mixed>
Return values
array<string|int, mixed>getRequest()
Get request
public
getRequest() : Request
Return values
RequestgetStart()
Get start
public
getStart() : float|null
Return values
float|nullhasData()
Has data
public
hasData() : bool
Return values
boolhasElapsed()
Has elapsed
public
hasElapsed() : bool
Return values
boolhasEnd()
Has end
public
hasEnd() : bool
Return values
boolhasLogger()
Has logger
public
hasLogger() : bool
Return values
boolhasLoggingParams()
Has logging parameters
public
hasLoggingParams() : bool
Return values
boolhasName()
Has name
public
hasName() : bool
Return values
boolhasRequest()
Has request
public
hasRequest() : bool
Return values
boolhasStart()
Has start
public
hasStart() : bool
Return values
boolisRedactingSensitiveData()
Determine if sensitive request data is being redacted
public
isRedactingSensitiveData() : bool
Return values
boollog()
Trigger handler logging
public
log() : void
Tags
prepare()
Prepare handler data for storage
public
prepare() : array<string|int, mixed>
Return values
array<string|int, mixed>prepareMessage()
Prepare handler message
public
prepareMessage([array<string|int, mixed>|null $context = null ]) : string
Parameters
- $context : array<string|int, mixed>|null = null
Return values
stringrequest()
Get request (alias)
public
request() : Request
Return values
RequestsetData()
Set data
public
setData([array<string|int, mixed> $data = [] ]) : AbstractHandler
Parameters
- $data : array<string|int, mixed> = []
Return values
AbstractHandlersetElapsed()
Set elapsed
public
setElapsed(float $elapsed) : AbstractHandler
Parameters
- $elapsed : float
Return values
AbstractHandlersetEnd()
Set end
public
setEnd([float|null $end = null ]) : AbstractHandler
Parameters
- $end : float|null = null
Return values
AbstractHandlersetLogger()
Set logger
public
setLogger(LoggerInterface $logger) : AbstractHandler
Parameters
- $logger : LoggerInterface
Return values
AbstractHandlersetLoggingParams()
Set logger
public
setLoggingParams(array<string|int, mixed> $loggingParams) : AbstractHandler
Parameters
- $loggingParams : array<string|int, mixed>
Return values
AbstractHandlersetName()
Set name
public
setName(string $name) : AbstractHandler
Parameters
- $name : string
Return values
AbstractHandlersetRedactedKeys()
Set the keys (case-insensitive, separator-insensitive substring match) whose values get redacted
public
setRedactedKeys(array<string|int, mixed> $keys) : RequestHandler
Parameters
- $keys : array<string|int, mixed>
Return values
RequestHandlersetRedactSensitiveData()
Set whether to redact sensitive request data before it's returned from prepare()
public
setRedactSensitiveData([bool $redact = true ]) : RequestHandler
Parameters
- $redact : bool = true
Return values
RequestHandlersetRequest()
Set request
public
setRequest(Request $request) : RequestHandler
Parameters
- $request : Request
Return values
RequestHandlersetStart()
Set start
public
setStart([float|null $start = null ]) : AbstractHandler
Parameters
- $start : float|null = null
Return values
AbstractHandlerstart()
Start
public
start() : AbstractHandler
Return values
AbstractHandlerstop()
Stop
public
stop() : AbstractHandler
Return values
AbstractHandlerisRedactedKey()
Determine if a key matches one of $redactedKeys (case- and separator-insensitive)
protected
isRedactedKey(string $key) : bool
Parameters
- $key : string
Return values
boolredactAll()
Redact every value in a flat array, regardless of key (used for $_COOKIE/$_SESSION, whose contents are treated as sensitive-by-nature)
protected
redactAll(mixed $data) : mixed
Parameters
- $data : mixed
redactKeys()
Recursively redact array values whose key matches one of $redactedKeys
protected
redactKeys(mixed $data) : mixed
Parameters
- $data : mixed
resolveLogLevel()
Resolve the configured log level, guarding the shared log() preconditions
protected
resolveLogLevel() : mixed
Returns null (and does nothing else) when no logger or logging params are set, so subclasses can bail out of log() early without duplicating that check. Throws when a logger and logging params are present but no 'level' param was configured.