@@ -389,7 +389,7 @@ discard block |
||
389 | 389 | |
390 | 390 | /** |
391 | 391 | * Bind named and positional parameters to a PDOStatement. |
392 | - * @param PDOStatement $statement |
|
392 | + * @param \PDOStatement $statement |
|
393 | 393 | * @param array $params |
394 | 394 | * @return void |
395 | 395 | */ |
@@ -434,6 +434,12 @@ discard block |
||
434 | 434 | |
435 | 435 | } |
436 | 436 | |
437 | + /** |
|
438 | + * @param string $option |
|
439 | + * @param string $default |
|
440 | + * |
|
441 | + * @return string |
|
442 | + */ |
|
437 | 443 | protected function getOption( $option, $default = null ) { |
438 | 444 | return isset($this->dsn->options[$option]) ? $this->dsn->options[$option] : $default; |
439 | 445 | } |
@@ -15,7 +15,6 @@ |
||
15 | 15 | use yolk\contracts\profiler\ProfilerAwareTrait; |
16 | 16 | use yolk\contracts\profiler\ProfilerAware; |
17 | 17 | use yolk\contracts\support\Dumpable; |
18 | - |
|
19 | 18 | use yolk\database\exceptions\DatabaseException; |
20 | 19 | use yolk\database\exceptions\ConnectionException; |
21 | 20 | use yolk\database\exceptions\NotConnectedException; |
@@ -346,15 +346,15 @@ |
||
346 | 346 | |
347 | 347 | $name = trim($name); |
348 | 348 | |
349 | - if( $name == '*' ) |
|
350 | - return $name; |
|
349 | + if( $name == '*' ) |
|
350 | + return $name; |
|
351 | 351 | |
352 | 352 | // ANSI-SQL (everything else) says to use double quotes to quote identifiers |
353 | - $char = '"'; |
|
353 | + $char = '"'; |
|
354 | 354 | |
355 | 355 | // MySQL uses backticks cos it's special |
356 | 356 | if( $this->dsn->isMySQL() ) |
357 | - $char = '`'; |
|
357 | + $char = '`'; |
|
358 | 358 | |
359 | 359 | return $char. $name. $char; |
360 | 360 |
@@ -62,7 +62,7 @@ |
||
62 | 62 | |
63 | 63 | // check the PDO driver is available |
64 | 64 | elseif( !in_array($this->dsn->type, \PDO::getAvailableDrivers()) ) |
65 | - throw new DatabaseException("The {$this->dsn->type} PDO driver is not currently installed"); |
|
65 | + throw new DatabaseException("the {$this->dsn->type} PDO driver is not currently installed"); |
|
66 | 66 | |
67 | 67 | } |
68 | 68 |
@@ -81,7 +81,7 @@ discard block |
||
81 | 81 | ); |
82 | 82 | |
83 | 83 | $this->pdo->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE, \PDO::FETCH_ASSOC); |
84 | - $this->pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); // always use exceptions |
|
84 | + $this->pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); // always use exceptions |
|
85 | 85 | |
86 | 86 | $this->setCharacterSet( |
87 | 87 | $this->getOption('charset', 'UTF8'), |
@@ -128,7 +128,7 @@ discard block |
||
128 | 128 | |
129 | 129 | public function prepare( $statement ) { |
130 | 130 | |
131 | - if( ! $statement instanceof \PDOStatement ) { |
|
131 | + if( !$statement instanceof \PDOStatement ) { |
|
132 | 132 | |
133 | 133 | $this->connect(); |
134 | 134 | |
@@ -356,7 +356,7 @@ discard block |
||
356 | 356 | if( $this->dsn->isMySQL() ) |
357 | 357 | $char = '`'; |
358 | 358 | |
359 | - return $char. $name. $char; |
|
359 | + return $char.$name.$char; |
|
360 | 360 | |
361 | 361 | } |
362 | 362 | |
@@ -450,10 +450,10 @@ discard block |
||
450 | 450 | if( !$charset ) |
451 | 451 | throw new DatabaseException('No character set specified'); |
452 | 452 | |
453 | - $sql = 'SET NAMES '. $this->pdo->quote($charset); |
|
453 | + $sql = 'SET NAMES '.$this->pdo->quote($charset); |
|
454 | 454 | |
455 | 455 | if( $collation ) |
456 | - $sql .= ' COLLATE '. $this->pdo->quote($collation); |
|
456 | + $sql .= ' COLLATE '.$this->pdo->quote($collation); |
|
457 | 457 | |
458 | 458 | $this->pdo->exec($sql); |
459 | 459 |
@@ -32,6 +32,9 @@ discard block |
||
32 | 32 | |
33 | 33 | protected $config; |
34 | 34 | |
35 | + /** |
|
36 | + * @param string $config |
|
37 | + */ |
|
35 | 38 | public static function fromString( $config ) { |
36 | 39 | |
37 | 40 | // parse the string into some components |
@@ -85,7 +88,6 @@ discard block |
||
85 | 88 | * pass - user's password |
86 | 89 | * db - name of the database schema to connect to |
87 | 90 | * options - an array of database specific options |
88 | - * @param array $dsn |
|
89 | 91 | */ |
90 | 92 | public function __construct( array $config ) { |
91 | 93 | |
@@ -120,7 +122,7 @@ discard block |
||
120 | 122 | /** |
121 | 123 | * Dynamic property access. |
122 | 124 | * @param string $key |
123 | - * @return mixed |
|
125 | + * @return string|null |
|
124 | 126 | */ |
125 | 127 | public function __get( $key ) { |
126 | 128 | return isset($this->config[$key]) ? $this->config[$key] : null; |
@@ -39,7 +39,7 @@ discard block |
||
39 | 39 | |
40 | 40 | // no point continuing if it went wrong |
41 | 41 | if( !$parts || empty($parts['scheme']) ) |
42 | - throw new ConfigurationException('Invalid DSN string: '. $config); |
|
42 | + throw new ConfigurationException('Invalid DSN string: '.$config); |
|
43 | 43 | |
44 | 44 | // use a closure to save loads of duplicate logic |
45 | 45 | $select = function( $k, array $arr ) { |
@@ -141,22 +141,22 @@ discard block |
||
141 | 141 | */ |
142 | 142 | public function toString() { |
143 | 143 | |
144 | - $str = $this->config['type']. '://'; |
|
144 | + $str = $this->config['type'].'://'; |
|
145 | 145 | |
146 | 146 | if( $this->config['user'] ) { |
147 | 147 | $str .= $this->config['user']; |
148 | 148 | if( $this->config['pass'] ) |
149 | - $str .= ':'. $this->config['pass']; |
|
149 | + $str .= ':'.$this->config['pass']; |
|
150 | 150 | $str .= '@'; |
151 | 151 | } |
152 | 152 | |
153 | 153 | if( $this->config['host'] ) { |
154 | 154 | $str .= $this->config['host']; |
155 | 155 | if( $this->config['port'] ) |
156 | - $str .= ':'. $this->config['port']; |
|
156 | + $str .= ':'.$this->config['port']; |
|
157 | 157 | } |
158 | 158 | |
159 | - $str .= '/'. $this->config['db']; |
|
159 | + $str .= '/'.$this->config['db']; |
|
160 | 160 | |
161 | 161 | if( $this->config['options'] ) { |
162 | 162 | $str .= '?'; |
@@ -203,7 +203,7 @@ discard block |
||
203 | 203 | break; |
204 | 204 | |
205 | 205 | default: |
206 | - throw new ConfigurationException('Invalid database type: '. $config['type']); |
|
206 | + throw new ConfigurationException('Invalid database type: '.$config['type']); |
|
207 | 207 | |
208 | 208 | } |
209 | 209 |
@@ -92,6 +92,9 @@ discard block |
||
92 | 92 | return $this; |
93 | 93 | } |
94 | 94 | |
95 | + /** |
|
96 | + * @param string $operator |
|
97 | + */ |
|
95 | 98 | public function where( $column, $operator, $value = null ) { |
96 | 99 | |
97 | 100 | // shortcut for equals |
@@ -302,6 +305,11 @@ discard block |
||
302 | 305 | |
303 | 306 | } |
304 | 307 | |
308 | + /** |
|
309 | + * @param string $operator |
|
310 | + * |
|
311 | + * @return string |
|
312 | + */ |
|
305 | 313 | protected function getParameterName( $column, $operator ) { |
306 | 314 | |
307 | 315 | $suffixes = [ |
@@ -209,7 +209,7 @@ discard block |
||
209 | 209 | foreach( $this->where as $i => $clause ) { |
210 | 210 | if( is_array($clause) ) |
211 | 211 | $clause = implode(' ', $clause); |
212 | - $sql[] = ($i ? 'AND ' : 'WHERE '). $clause; |
|
212 | + $sql[] = ($i ? 'AND ' : 'WHERE ').$clause; |
|
213 | 213 | } |
214 | 214 | |
215 | 215 | return $sql; |
@@ -223,7 +223,7 @@ discard block |
||
223 | 223 | if( $this->order ) { |
224 | 224 | $order = 'ORDER BY '; |
225 | 225 | foreach( $this->order as $column => $dir ) { |
226 | - $order .= $column. ' '. $dir. ', '; |
|
226 | + $order .= $column.' '.$dir.', '; |
|
227 | 227 | } |
228 | 228 | $sql[] = trim($order, ', '); |
229 | 229 | } |
@@ -262,7 +262,7 @@ discard block |
||
262 | 262 | if( strpos($spec, '(') !== false ) |
263 | 263 | return $spec; |
264 | 264 | |
265 | - foreach( [' AS ', ' ', '.'] as $sep) { |
|
265 | + foreach( [' AS ', ' ', '.'] as $sep ) { |
|
266 | 266 | if( $pos = strripos($spec, $sep) ) { |
267 | 267 | return |
268 | 268 | $this->quoteIdentifier(substr($spec, 0, $pos)). |
@@ -323,7 +323,7 @@ discard block |
||
323 | 323 | $name = substr($name, $pos + 1); |
324 | 324 | |
325 | 325 | if( isset($suffixes[$operator]) ) |
326 | - $name .= '_'. $suffixes[$operator]; |
|
326 | + $name .= '_'.$suffixes[$operator]; |
|
327 | 327 | |
328 | 328 | return $name; |
329 | 329 |
@@ -15,9 +15,9 @@ |
||
15 | 15 | use yolk\database\DSN; |
16 | 16 | use yolk\database\exceptions\ConfigurationException; |
17 | 17 | |
18 | -class MySQLConnection extends BaseConnection { |
|
18 | +class MySQLConnection extends BaseConnection { |
|
19 | 19 | |
20 | - public function __construct( DSN $dsn ) { |
|
20 | + public function __construct( DSN $dsn ) { |
|
21 | 21 | |
22 | 22 | if( !$dsn->isMySQL() ) |
23 | 23 | throw new ConfigurationException(sprintf("\\%s expects a DSN of type '%s', '%s' given", __CLASS__, DSN::TYPE_MYSQL, $dsn->type)); |
@@ -15,9 +15,9 @@ |
||
15 | 15 | use yolk\database\DSN; |
16 | 16 | use yolk\database\exceptions\ConfigurationException; |
17 | 17 | |
18 | -class PgSQLConnection extends BaseConnection { |
|
18 | +class PgSQLConnection extends BaseConnection { |
|
19 | 19 | |
20 | - public function __construct( DSN $dsn ) { |
|
20 | + public function __construct( DSN $dsn ) { |
|
21 | 21 | |
22 | 22 | if( !$dsn->isPgSQL() ) |
23 | 23 | throw new ConfigurationException(sprintf("\\%s expects a DSN of type '%s', '%s' given", __CLASS__, DSN::TYPE_PGSQL, $dsn->type)); |
@@ -15,9 +15,9 @@ |
||
15 | 15 | use yolk\database\DSN; |
16 | 16 | use yolk\database\exceptions\ConfigurationException; |
17 | 17 | |
18 | -class SQLiteConnection extends BaseConnection { |
|
18 | +class SQLiteConnection extends BaseConnection { |
|
19 | 19 | |
20 | - public function __construct( DSN $dsn ) { |
|
20 | + public function __construct( DSN $dsn ) { |
|
21 | 21 | |
22 | 22 | if( !$dsn->isSQLite() ) |
23 | 23 | throw new ConfigurationException(sprintf("\\%s expects a DSN of type '%s', '%s' given", __CLASS__, DSN::TYPE_SQLITE, $dsn->type)); |
@@ -14,9 +14,9 @@ |
||
14 | 14 | /** |
15 | 15 | * Thrown if a database configuration is invalid. |
16 | 16 | */ |
17 | -class ConfigurationException extends DatabaseException { |
|
17 | +class ConfigurationException extends DatabaseException { |
|
18 | 18 | |
19 | - public function __construct( $message = 'The specified database configuration is invalid', $code = 0, \Exception $previous = null ) { |
|
19 | + public function __construct( $message = 'The specified database configuration is invalid', $code = 0, \Exception $previous = null ) { |
|
20 | 20 | parent::__construct($message, $code, $previous); |
21 | 21 | } |
22 | 22 |
@@ -14,9 +14,9 @@ |
||
14 | 14 | /** |
15 | 15 | * Thrown if a database connection could not be established. |
16 | 16 | */ |
17 | -class ConnectionException extends DatabaseException { |
|
17 | +class ConnectionException extends DatabaseException { |
|
18 | 18 | |
19 | - public function __construct( $message = 'An error occured attempting to connect to the database', $code = 0, \Exception $previous = null ) { |
|
19 | + public function __construct( $message = 'An error occured attempting to connect to the database', $code = 0, \Exception $previous = null ) { |
|
20 | 20 | parent::__construct($message, $code, $previous); |
21 | 21 | } |
22 | 22 |
@@ -14,7 +14,7 @@ discard block |
||
14 | 14 | /** |
15 | 15 | * Base database exception. |
16 | 16 | */ |
17 | -class DatabaseException extends \Exception { |
|
17 | +class DatabaseException extends \Exception { |
|
18 | 18 | |
19 | 19 | /** |
20 | 20 | * https://bugs.php.net/bug.php?id=51742 |
@@ -22,7 +22,7 @@ discard block |
||
22 | 22 | */ |
23 | 23 | protected $code; |
24 | 24 | |
25 | - public function __construct( $message = 'An unknown database error occured', $code = 0, \Exception $previous = null ) { |
|
25 | + public function __construct( $message = 'An unknown database error occured', $code = 0, \Exception $previous = null ) { |
|
26 | 26 | parent::__construct($message, (int) $code, $previous); |
27 | 27 | $this->code = $code; |
28 | 28 | } |