| @@ -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 | } |