Skip to content

Commit

Permalink
PgStringToScalar as switch
Browse files Browse the repository at this point in the history
  • Loading branch information
klapuch committed Jan 19, 2019
1 parent aee153b commit e1ac15b
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 18 deletions.
34 changes: 17 additions & 17 deletions Core/PgStringToScalar.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,6 @@
namespace Klapuch\Storage;

final class PgStringToScalar implements Conversion {
private const TYPES = [
'integer' => 'toInt',
'int' => 'toInt',
'smallint' => 'toInt',
'bigint' => 'toInt',
'boolean' => 'toBool',
'bool' => 'toBool',
];

/** @var string|null */
private $original;

Expand All @@ -28,19 +19,28 @@ public function __construct(?string $original, string $type) {
* @return mixed
*/
public function value() {
if ($this->original !== null && array_key_exists(strtolower($this->type), self::TYPES)) {
return call_user_func_array([$this, self::TYPES[strtolower($this->type)]], [$this->original]);
if ($this->original === null) {
return $this->original;
}
switch (strtolower($this->type)) {
case 'integer':
case 'int':
case 'smallint':
case 'bigint':
return self::toInt($this->original);
case 'bool':
case 'boolean':
return self::toBool($this->original);
default:
return $this->original;
}
return $this->original;
}

// @codingStandardsIgnoreStart Used by call_user_func_array
private function toInt(string $original): int {
private static function toInt(string $original): int {
return (int) $original;
}

private function toBool(string $original): bool {
return $original === 't' ? true : false;
private static function toBool(string $original): bool {
return $original === 't';
}
// @codingStandardsIgnoreEnd
}
1 change: 0 additions & 1 deletion phpstan.neon
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
parameters:
ignoreErrors:
- '#Function igbinary_[a-z]+ not found.#'
- '#.+call_user_func_array expects callable.+#'
- '#Parameter \#\d \$original of class Klapuch\\Storage\\(PgText|PgJsonToArray|PgHStoreToArray|PgIntRangeToArray|PgTimestamptzRangeToArray|PgPointToArray|PgArrayToArray|PgRowToTypedArray|PgNative) constructor expects string, string\|null given\.#'

0 comments on commit e1ac15b

Please sign in to comment.