Documentation

RequestHandler extends AbstractHandler
in package

Debug request handler class

Tags
category

Pop

author

Nick Sagona, III nick@popphp.org

copyright

Copyright (c) 2009-2026 Nick Sagona, III

license

https://www.popphp.org/license New BSD License

version
4.0.0

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

$loggingParams

Logging params

protected array<string|int, mixed> $loggingParams = []

$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

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> = []

getData()

Get data

public getData() : array<string|int, mixed>
Return values
array<string|int, mixed>

getElapsed()

Get elapsed

public getElapsed() : float|null
Return values
float|null

getEnd()

Get end

public getEnd() : float|null
Return values
float|null

getLogger()

Get logger

public getLogger() : LoggerInterface|null
Return values
LoggerInterface|null

getLoggingParams()

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|null

getRedactedKeys()

Get the keys whose values get redacted

public getRedactedKeys() : array<string|int, mixed>
Return values
array<string|int, mixed>

getStart()

Get start

public getStart() : float|null
Return values
float|null

hasElapsed()

Has elapsed

public hasElapsed() : bool
Return values
bool

hasLogger()

Has logger

public hasLogger() : bool
Return values
bool

hasLoggingParams()

Has logging parameters

public hasLoggingParams() : bool
Return values
bool

hasRequest()

Has request

public hasRequest() : bool
Return values
bool

isRedactingSensitiveData()

Determine if sensitive request data is being redacted

public isRedactingSensitiveData() : bool
Return values
bool

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
string

setRedactedKeys()

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
RequestHandler

setRedactSensitiveData()

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
RequestHandler

isRedactedKey()

Determine if a key matches one of $redactedKeys (case- and separator-insensitive)

protected isRedactedKey(string $key) : bool
Parameters
$key : string
Return values
bool

redactAll()

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.

Tags
throws
Exception

        
On this page

Search results