- // Resolve some defaults for b/c
- $p['host'] = $p['host'] ?? false;
- $p['user'] = $p['user'] ?? false;
- $p['password'] = $p['password'] ?? false;
- $p['dbname'] = $p['dbname'] ?? false;
- $p['flags'] = $p['flags'] ?? 0;
- $p['variables'] = $p['variables'] ?? [];
- $p['tablePrefix'] = $p['tablePrefix'] ?? '';
- $p['schema'] = $p['schema'] ?? null;
- $p['cliMode'] = $p['cliMode'] ?? ( PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg' );
- $p['agent'] = $p['agent'] ?? '';
- if ( !isset( $p['connLogger'] ) ) {
- $p['connLogger'] = new NullLogger();
- }
- if ( !isset( $p['queryLogger'] ) ) {
- $p['queryLogger'] = new NullLogger();
- }
- $p['profiler'] = $p['profiler'] ?? null;
- if ( !isset( $p['trxProfiler'] ) ) {
- $p['trxProfiler'] = new TransactionProfiler();
- }
- if ( !isset( $p['errorLogger'] ) ) {
- $p['errorLogger'] = function ( Exception $e ) {
+ $params += [
+ 'host' => null,
+ 'user' => null,
+ 'password' => null,
+ 'dbname' => null,
+ 'schema' => null,
+ 'tablePrefix' => '',
+ 'flags' => 0,
+ 'variables' => [],
+ 'cliMode' => ( PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg' ),
+ 'agent' => basename( $_SERVER['SCRIPT_NAME'] ) . '@' . gethostname()
+ ];
+
+ $normalizedParams = [
+ // Configuration
+ 'host' => strlen( $params['host'] ) ? $params['host'] : null,
+ 'user' => strlen( $params['user'] ) ? $params['user'] : null,
+ 'password' => is_string( $params['password'] ) ? $params['password'] : null,
+ 'dbname' => strlen( $params['dbname'] ) ? $params['dbname'] : null,
+ 'schema' => strlen( $params['schema'] ) ? $params['schema'] : null,
+ 'tablePrefix' => (string)$params['tablePrefix'],
+ 'flags' => (int)$params['flags'],
+ 'variables' => $params['variables'],
+ 'cliMode' => (bool)$params['cliMode'],
+ 'agent' => (string)$params['agent'],
+ // Objects and callbacks
+ 'profiler' => $params['profiler'] ?? null,
+ 'trxProfiler' => $params['trxProfiler'] ?? new TransactionProfiler(),
+ 'connLogger' => $params['connLogger'] ?? new NullLogger(),
+ 'queryLogger' => $params['queryLogger'] ?? new NullLogger(),
+ 'errorLogger' => $params['errorLogger'] ?? function ( Exception $e ) {