Static test fixes

This commit is contained in:
Dennis Eichhorn 2018-07-14 17:23:18 +02:00
parent 0614c12eef
commit e76606d0a3
6 changed files with 100 additions and 118 deletions

View File

@ -72,11 +72,11 @@ abstract class BuilderAbstract
* *
* @param string $prefix Prefix * @param string $prefix Prefix
* *
* @return BuilderAbstract * @return self
* *
* @since 1.0.0 * @since 1.0.0
*/ */
public function prefix(string $prefix) : BuilderAbstract public function prefix(string $prefix) : self
{ {
$this->prefix = $prefix; $this->prefix = $prefix;

View File

@ -14,7 +14,7 @@ declare(strict_types=1);
namespace phpOMS\DataStorage\Database; namespace phpOMS\DataStorage\Database;
use phpOMS\DataStorage\DataStorageConnectionInterface; use phpOMS\DataStorage\Database\Connection\ConnectionAbstract;
use phpOMS\DataStorage\Database\Query\Builder; use phpOMS\DataStorage\Database\Query\Builder;
use phpOMS\DataStorage\DataMapperInterface; use phpOMS\DataStorage\DataMapperInterface;
use phpOMS\Message\RequestAbstract; use phpOMS\Message\RequestAbstract;
@ -37,7 +37,7 @@ class DataMapperAbstract implements DataMapperInterface
/** /**
* Database connection. * Database connection.
* *
* @var DataStorageConnectionInterface * @var ConnectionAbstract
* @since 1.0.0 * @since 1.0.0
*/ */
protected static $db = null; protected static $db = null;
@ -149,7 +149,7 @@ class DataMapperAbstract implements DataMapperInterface
/** /**
* Highest mapper to know when to clear initialized objects * Highest mapper to know when to clear initialized objects
* *
* @var string * @var null|string
* @since 1.0.0 * @since 1.0.0
*/ */
protected static $parentMapper = null; protected static $parentMapper = null;
@ -195,13 +195,13 @@ class DataMapperAbstract implements DataMapperInterface
/** /**
* Set database connection. * Set database connection.
* *
* @param DataStorageConnectionInterface $con Database connection * @param ConnectionAbstract $con Database connection
* *
* @return void * @return void
* *
* @since 1.0.0 * @since 1.0.0
*/ */
public static function setConnection(DataStorageConnectionInterface $con) : void public static function setConnection(ConnectionAbstract $con) : void
{ {
self::$db = $con; self::$db = $con;
} }
@ -389,14 +389,14 @@ class DataMapperAbstract implements DataMapperInterface
/** /**
* Create base model. * Create base model.
* *
* @param Object $obj Model to create * @param object $obj Model to create
* @param \ReflectionClass $refClass Reflection class * @param \ReflectionClass $refClass Reflection class
* *
* @return mixed * @return mixed
* *
* @since 1.0.0 * @since 1.0.0
*/ */
private static function createModel($obj, \ReflectionClass $refClass) private static function createModel(object $obj, \ReflectionClass $refClass)
{ {
$query = new Builder(self::$db); $query = new Builder(self::$db);
$query->prefix(self::$db->getPrefix())->into(static::$table); $query->prefix(self::$db->getPrefix())->into(static::$table);
@ -512,14 +512,14 @@ class DataMapperAbstract implements DataMapperInterface
/** /**
* Get id of object * Get id of object
* *
* @param Object $obj Model to create * @param object $obj Model to create
* @param \ReflectionClass $refClass Reflection class * @param \ReflectionClass $refClass Reflection class
* *
* @return mixed * @return mixed
* *
* @since 1.0.0 * @since 1.0.0
*/ */
private static function getObjectId($obj, \ReflectionClass $refClass = null) private static function getObjectId(object $obj, \ReflectionClass $refClass = null)
{ {
$refClass = $refClass ?? new \ReflectionClass($obj); $refClass = $refClass ?? new \ReflectionClass($obj);
$refProp = $refClass->getProperty(static::$columns[static::$primaryField]['internal']); $refProp = $refClass->getProperty(static::$columns[static::$primaryField]['internal']);
@ -541,14 +541,14 @@ class DataMapperAbstract implements DataMapperInterface
* Set id to model * Set id to model
* *
* @param \ReflectionClass $refClass Reflection class * @param \ReflectionClass $refClass Reflection class
* @param Object $obj Object to create * @param object $obj Object to create
* @param mixed $objId Id to set * @param mixed $objId Id to set
* *
* @return void * @return void
* *
* @since 1.0.0 * @since 1.0.0
*/ */
private static function setObjectId(\ReflectionClass $refClass, $obj, $objId) : void private static function setObjectId(\ReflectionClass $refClass, object $obj, $objId) : void
{ {
$refProp = $refClass->getProperty(static::$columns[static::$primaryField]['internal']); $refProp = $refClass->getProperty(static::$columns[static::$primaryField]['internal']);
@ -568,7 +568,7 @@ class DataMapperAbstract implements DataMapperInterface
* Create has many * Create has many
* *
* @param \ReflectionClass $refClass Reflection class * @param \ReflectionClass $refClass Reflection class
* @param Object $obj Object to create * @param object $obj Object to create
* @param mixed $objId Id to set * @param mixed $objId Id to set
* *
* @return void * @return void
@ -577,7 +577,7 @@ class DataMapperAbstract implements DataMapperInterface
* *
* @since 1.0.0 * @since 1.0.0
*/ */
private static function createHasMany(\ReflectionClass $refClass, $obj, $objId) : void private static function createHasMany(\ReflectionClass $refClass, object $obj, $objId) : void
{ {
foreach (static::$hasMany as $propertyName => $rel) { foreach (static::$hasMany as $propertyName => $rel) {
$property = $refClass->getProperty($propertyName); $property = $refClass->getProperty($propertyName);
@ -672,7 +672,7 @@ class DataMapperAbstract implements DataMapperInterface
$objsIds = []; $objsIds = [];
foreach ($values as $key => &$value) { foreach ($values as $key => &$value) {
if (!is_object($value)) { if (!is_array($value)) {
// Is scalar => already in database // Is scalar => already in database
$objsIds[$key] = $value; $objsIds[$key] = $value;
@ -706,14 +706,14 @@ class DataMapperAbstract implements DataMapperInterface
* Create has one * Create has one
* *
* @param \ReflectionClass $refClass Property name to initialize * @param \ReflectionClass $refClass Property name to initialize
* @param Object $obj Object to create * @param object $obj Object to create
* *
* @return mixed * @return mixed
* @todo implement??? * @todo implement???
* *
* @since 1.0.0 * @since 1.0.0
*/ */
private static function createHasOne(\ReflectionClass $refClass, $obj) private static function createHasOne(\ReflectionClass $refClass, object $obj)
{ {
throw new \Exception(); throw new \Exception();
} }
@ -724,26 +724,22 @@ class DataMapperAbstract implements DataMapperInterface
* The reference is stored in the main model * The reference is stored in the main model
* *
* @param string $propertyName Property name to initialize * @param string $propertyName Property name to initialize
* @param Object $obj Object to create * @param object $obj Object to create
* *
* @return mixed * @return mixed
* *
* @since 1.0.0 * @since 1.0.0
*/ */
private static function createOwnsOne(string $propertyName, $obj) private static function createOwnsOne(string $propertyName, object $obj)
{ {
if (is_object($obj)) { $mapper = static::$ownsOne[$propertyName]['mapper'];
$mapper = static::$ownsOne[$propertyName]['mapper']; $primaryKey = $mapper::getObjectId($obj);
$primaryKey = $mapper::getObjectId($obj);
if (empty($primaryKey)) { if (empty($primaryKey)) {
return $mapper::create($obj); return $mapper::create($obj);
}
return $primaryKey;
} }
return $obj; return $primaryKey;
} }
/** /**
@ -780,27 +776,23 @@ class DataMapperAbstract implements DataMapperInterface
* The reference is stored in the main model * The reference is stored in the main model
* *
* @param string $propertyName Property name to initialize * @param string $propertyName Property name to initialize
* @param Object $obj Object to create * @param object $obj Object to create
* *
* @return mixed * @return mixed
* *
* @since 1.0.0 * @since 1.0.0
*/ */
private static function createBelongsTo(string $propertyName, $obj) private static function createBelongsTo(string $propertyName, object $obj)
{ {
if (is_object($obj)) { /** @var string $mapper */
/** @var string $mapper */ $mapper = static::$belongsTo[$propertyName]['mapper'];
$mapper = static::$belongsTo[$propertyName]['mapper']; $primaryKey = $mapper::getObjectId($obj);
$primaryKey = $mapper::getObjectId($obj);
if (empty($primaryKey)) { if (empty($primaryKey)) {
return $mapper::create($obj); return $mapper::create($obj);
}
return $primaryKey;
} }
return $obj; return $primaryKey;
} }
/** /**
@ -890,11 +882,11 @@ class DataMapperAbstract implements DataMapperInterface
} elseif ($type === 'DateTime') { } elseif ($type === 'DateTime') {
return $value->format('Y-m-d H:i:s'); return $value->format('Y-m-d H:i:s');
} elseif ($type === 'Json' || $type === 'jsonSerializable') { } elseif ($type === 'Json' || $type === 'jsonSerializable') {
return \json_encode($value); return (string) \json_encode($value);
} elseif ($type === 'Serializable') { } elseif ($type === 'Serializable') {
return $value->serialize(); return $value->serialize();
} elseif ($value instanceof \JsonSerializable) { } elseif ($value instanceof \JsonSerializable) {
return \json_encode($value->jsonSerialize()); return (string) \json_encode($value->jsonSerialize());
} elseif (is_object($value) && method_exists($value, 'getId')) { } elseif (is_object($value) && method_exists($value, 'getId')) {
return $value->getId(); return $value->getId();
} }
@ -906,7 +898,7 @@ class DataMapperAbstract implements DataMapperInterface
* Update has many * Update has many
* *
* @param \ReflectionClass $refClass Reflection class * @param \ReflectionClass $refClass Reflection class
* @param Object $obj Object to create * @param object $obj Object to create
* @param mixed $objId Id to set * @param mixed $objId Id to set
* *
* @return void * @return void
@ -915,7 +907,7 @@ class DataMapperAbstract implements DataMapperInterface
* *
* @since 1.0.0 * @since 1.0.0
*/ */
private static function updateHasMany(\ReflectionClass $refClass, $obj, $objId) : void private static function updateHasMany(\ReflectionClass $refClass, object $obj, $objId) : void
{ {
$objsIds = []; $objsIds = [];
@ -1055,24 +1047,20 @@ class DataMapperAbstract implements DataMapperInterface
* The reference is stored in the main model * The reference is stored in the main model
* *
* @param string $propertyName Property name to initialize * @param string $propertyName Property name to initialize
* @param Object $obj Object to update * @param object $obj Object to update
* *
* @return mixed * @return mixed
* *
* @since 1.0.0 * @since 1.0.0
*/ */
private static function updateOwnsOne(string $propertyName, $obj) private static function updateOwnsOne(string $propertyName, object $obj)
{ {
if (is_object($obj)) { /** @var string $mapper */
/** @var string $mapper */ $mapper = static::$ownsOne[$propertyName]['mapper'];
$mapper = static::$ownsOne[$propertyName]['mapper'];
// todo: delete owned one object is not recommended since it can be owned by by something else? or does owns one mean that nothing else can have a relation to this one? // todo: delete owned one object is not recommended since it can be owned by by something else? or does owns one mean that nothing else can have a relation to this one?
return $mapper::update($obj); return $mapper::update($obj);
}
return $obj;
} }
/** /**
@ -1081,28 +1069,24 @@ class DataMapperAbstract implements DataMapperInterface
* The reference is stored in the main model * The reference is stored in the main model
* *
* @param string $propertyName Property name to initialize * @param string $propertyName Property name to initialize
* @param Object $obj Object to update * @param object $obj Object to update
* *
* @return mixed * @return mixed
* *
* @since 1.0.0 * @since 1.0.0
*/ */
private static function updateBelongsTo(string $propertyName, $obj) private static function updateBelongsTo(string $propertyName, object $obj)
{ {
if (is_object($obj)) { /** @var string $mapper */
/** @var string $mapper */ $mapper = static::$belongsTo[$propertyName]['mapper'];
$mapper = static::$belongsTo[$propertyName]['mapper'];
return $mapper::update($obj); return $mapper::update($obj);
}
return $obj;
} }
/** /**
* Update object in db. * Update object in db.
* *
* @param Object $obj Model to update * @param object $obj Model to update
* @param mixed $objId Model id * @param mixed $objId Model id
* @param \ReflectionClass $refClass Reflection class * @param \ReflectionClass $refClass Reflection class
* *
@ -1110,7 +1094,7 @@ class DataMapperAbstract implements DataMapperInterface
* *
* @since 1.0.0 * @since 1.0.0
*/ */
private static function updateModel($obj, $objId, \ReflectionClass $refClass = null) : void private static function updateModel(object $obj, $objId, \ReflectionClass $refClass = null) : void
{ {
$query = new Builder(self::$db); $query = new Builder(self::$db);
$query->prefix(self::$db->getPrefix()) $query->prefix(self::$db->getPrefix())
@ -1126,6 +1110,7 @@ class DataMapperAbstract implements DataMapperInterface
continue; continue;
} }
$refClass = $refClass ?? new \ReflectionClass($obj);
$property = $refClass->getProperty($propertyName); $property = $refClass->getProperty($propertyName);
if (!($isPublic = $property->isPublic())) { if (!($isPublic = $property->isPublic())) {
@ -1211,7 +1196,7 @@ class DataMapperAbstract implements DataMapperInterface
* Delete has many * Delete has many
* *
* @param \ReflectionClass $refClass Reflection class * @param \ReflectionClass $refClass Reflection class
* @param Object $obj Object to create * @param object $obj Object to create
* @param mixed $objId Id to set * @param mixed $objId Id to set
* @param int $relations Delete all relations as well * @param int $relations Delete all relations as well
* *
@ -1221,7 +1206,7 @@ class DataMapperAbstract implements DataMapperInterface
* *
* @since 1.0.0 * @since 1.0.0
*/ */
private static function deleteHasMany(\ReflectionClass $refClass, $obj, $objId, int $relations) : void private static function deleteHasMany(\ReflectionClass $refClass, object $obj, $objId, int $relations) : void
{ {
foreach (static::$hasMany as $propertyName => $rel) { foreach (static::$hasMany as $propertyName => $rel) {
$property = $refClass->getProperty($propertyName); $property = $refClass->getProperty($propertyName);
@ -1284,23 +1269,19 @@ class DataMapperAbstract implements DataMapperInterface
* The reference is stored in the main model * The reference is stored in the main model
* *
* @param string $propertyName Property name to initialize * @param string $propertyName Property name to initialize
* @param Object $obj Object to delete * @param object $obj Object to delete
* *
* @return mixed * @return mixed
* *
* @since 1.0.0 * @since 1.0.0
*/ */
private static function deleteOwnsOne(string $propertyName, $obj) private static function deleteOwnsOne(string $propertyName, object $obj)
{ {
if (is_object($obj)) { /** @var string $mapper */
/** @var string $mapper */ $mapper = static::$ownsOne[$propertyName]['mapper'];
$mapper = static::$ownsOne[$propertyName]['mapper'];
// todo: delete owned one object is not recommended since it can be owned by by something else? or does owns one mean that nothing else can have a relation to this one? // todo: delete owned one object is not recommended since it can be owned by by something else? or does owns one mean that nothing else can have a relation to this one?
return $mapper::delete($obj); return $mapper::delete($obj);
}
return $obj;
} }
/** /**
@ -1309,28 +1290,24 @@ class DataMapperAbstract implements DataMapperInterface
* The reference is stored in the main model * The reference is stored in the main model
* *
* @param string $propertyName Property name to initialize * @param string $propertyName Property name to initialize
* @param Object $obj Object to delete * @param object $obj Object to delete
* *
* @return mixed * @return mixed
* *
* @since 1.0.0 * @since 1.0.0
*/ */
private static function deleteBelongsTo(string $propertyName, $obj) private static function deleteBelongsTo(string $propertyName, object $obj)
{ {
if (is_object($obj)) { /** @var string $mapper */
/** @var string $mapper */ $mapper = static::$belongsTo[$propertyName]['mapper'];
$mapper = static::$belongsTo[$propertyName]['mapper'];
return $mapper::delete($obj); return $mapper::delete($obj);
}
return $obj;
} }
/** /**
* Delete object in db. * Delete object in db.
* *
* @param Object $obj Model to delete * @param object $obj Model to delete
* @param mixed $objId Model id * @param mixed $objId Model id
* @param int $relations Delete all relations as well * @param int $relations Delete all relations as well
* @param \ReflectionClass $refClass Reflection class * @param \ReflectionClass $refClass Reflection class
@ -1339,7 +1316,7 @@ class DataMapperAbstract implements DataMapperInterface
* *
* @since 1.0.0 * @since 1.0.0
*/ */
private static function deleteModel($obj, $objId, int $relations = RelationType::REFERENCE, \ReflectionClass $refClass = null) : void private static function deleteModel(object $obj, $objId, int $relations = RelationType::REFERENCE, \ReflectionClass $refClass = null) : void
{ {
$query = new Builder(self::$db); $query = new Builder(self::$db);
$query->prefix(self::$db->getPrefix()) $query->prefix(self::$db->getPrefix())
@ -1347,6 +1324,7 @@ class DataMapperAbstract implements DataMapperInterface
->from(static::$table) ->from(static::$table)
->where(static::$table . '.' . static::$primaryField, '=', $objId); ->where(static::$table . '.' . static::$primaryField, '=', $objId);
$refClass = $refClass ?? new \ReflectionClass($obj);
$properties = $refClass->getProperties(); $properties = $refClass->getProperties();
if ($relations === RelationType::ALL) { if ($relations === RelationType::ALL) {
@ -1775,7 +1753,9 @@ class DataMapperAbstract implements DataMapperInterface
continue; continue;
} }
$hasPath = false; $hasPath = false;
$aValue = [];
$arrayPath = '';
if (stripos(static::$columns[$column]['internal'], '/') !== false) { if (stripos(static::$columns[$column]['internal'], '/') !== false) {
$hasPath = true; $hasPath = true;
@ -1787,8 +1767,8 @@ class DataMapperAbstract implements DataMapperInterface
} }
array_shift($path); array_shift($path);
$path = implode('/', $path); $arrayPath = implode('/', $path);
$aValue = $refProp->getValue($obj); $aValue = $refProp->getValue($obj);
} else { } else {
$refProp = $refClass->getProperty(static::$columns[$column]['internal']); $refProp = $refClass->getProperty(static::$columns[$column]['internal']);
@ -1804,20 +1784,20 @@ class DataMapperAbstract implements DataMapperInterface
} }
if ($hasPath) { if ($hasPath) {
$value = ArrayUtils::setArray($path, $aValue, $value, '/', true); $value = ArrayUtils::setArray($arrayPath, $aValue, $value, '/', true);
} }
$refProp->setValue($obj, $value); $refProp->setValue($obj, $value);
} elseif (static::$columns[$column]['type'] === 'DateTime') { } elseif (static::$columns[$column]['type'] === 'DateTime') {
$value = new \DateTime($value ?? ''); $value = new \DateTime($value ?? '');
if ($hasPath) { if ($hasPath) {
$value = ArrayUtils::setArray($path, $aValue, $value, '/', true); $value = ArrayUtils::setArray($arrayPath, $aValue, $value, '/', true);
} }
$refProp->setValue($obj, $value); $refProp->setValue($obj, $value);
} elseif (static::$columns[$column]['type'] === 'Json') { } elseif (static::$columns[$column]['type'] === 'Json') {
if ($hasPath) { if ($hasPath) {
$value = ArrayUtils::setArray($path, $aValue, $value, '/', true); $value = ArrayUtils::setArray($arrayPath, $aValue, $value, '/', true);
} }
$refProp->setValue($obj, \json_decode($value, true)); $refProp->setValue($obj, \json_decode($value, true));
@ -2104,7 +2084,7 @@ class DataMapperAbstract implements DataMapperInterface
public static function getAll(int $relations = RelationType::ALL, int $depth = null, string $lang = '') : array public static function getAll(int $relations = RelationType::ALL, int $depth = null, string $lang = '') : array
{ {
if (isset($depth) && $depth < 1) { if (isset($depth) && $depth < 1) {
return null; return [];
} }
if (!isset(self::$parentMapper)) { if (!isset(self::$parentMapper)) {
@ -2132,7 +2112,7 @@ class DataMapperAbstract implements DataMapperInterface
public static function getAllArray(int $relations = RelationType::ALL, int $depth = null, string $lang = '') : array public static function getAllArray(int $relations = RelationType::ALL, int $depth = null, string $lang = '') : array
{ {
if (isset($depth) && $depth < 1) { if (isset($depth) && $depth < 1) {
return null; return [];
} }
if (!isset(self::$parentMapper)) { if (!isset(self::$parentMapper)) {
@ -2174,14 +2154,14 @@ class DataMapperAbstract implements DataMapperInterface
* @param int $depth Relation depth * @param int $depth Relation depth
* @param string $lang Language * @param string $lang Language
* *
* @return mixed * @return array
* *
* @since 1.0.0 * @since 1.0.0
*/ */
public static function getNewest(int $limit = 1, Builder $query = null, int $relations = RelationType::ALL, int $depth = null, string $lang = '') : array public static function getNewest(int $limit = 1, Builder $query = null, int $relations = RelationType::ALL, int $depth = null, string $lang = '') : array
{ {
if (isset($depth) && $depth < 1) { if (isset($depth) && $depth < 1) {
return null; return [];
} }
self::extend(__CLASS__); self::extend(__CLASS__);
@ -2204,7 +2184,7 @@ class DataMapperAbstract implements DataMapperInterface
$sth->execute(); $sth->execute();
$results = $sth->fetchAll(\PDO::FETCH_ASSOC); $results = $sth->fetchAll(\PDO::FETCH_ASSOC);
$obj = self::populateIterable(is_bool($results) ? [] : $results); $obj = self::populateIterable($results === false ? [] : $results);
self::fillRelations($obj, $relations, isset($depth) ? --$depth : null); self::fillRelations($obj, $relations, isset($depth) ? --$depth : null);
self::clear(); self::clear();
@ -2227,14 +2207,14 @@ class DataMapperAbstract implements DataMapperInterface
public static function getAllByQuery(Builder $query, int $relations = RelationType::ALL, int $depth = null) : array public static function getAllByQuery(Builder $query, int $relations = RelationType::ALL, int $depth = null) : array
{ {
if (isset($depth) && $depth < 1) { if (isset($depth) && $depth < 1) {
return null; return [];
} }
$sth = self::$db->con->prepare($query->toSql()); $sth = self::$db->con->prepare($query->toSql());
$sth->execute(); $sth->execute();
$results = $sth->fetchAll(\PDO::FETCH_ASSOC); $results = $sth->fetchAll(\PDO::FETCH_ASSOC);
$results = is_bool($results) ? [] : $results; $results = $results === false ? [] : $results;
$obj = self::populateIterable($results); $obj = self::populateIterable($results);
self::fillRelations($obj, $relations, isset($depth) ? --$depth : null); self::fillRelations($obj, $relations, isset($depth) ? --$depth : null);
@ -2275,7 +2255,7 @@ class DataMapperAbstract implements DataMapperInterface
/** /**
* Fill object with relations * Fill object with relations
* *
* @param mixed $obj Objects to fill * @param array $obj Objects to fill
* @param int $relations Relations type * @param int $relations Relations type
* @param int $depth Relation depth * @param int $depth Relation depth
* *
@ -2325,7 +2305,7 @@ class DataMapperAbstract implements DataMapperInterface
/** /**
* Fill object with relations * Fill object with relations
* *
* @param mixed $obj Objects to fill * @param array $obj Objects to fill
* @param int $relations Relations type * @param int $relations Relations type
* @param int $depth Relation depth * @param int $depth Relation depth
* *
@ -2377,7 +2357,7 @@ class DataMapperAbstract implements DataMapperInterface
* *
* @param mixed $primaryKey Key * @param mixed $primaryKey Key
* *
* @return mixed * @return array
* *
* @since 1.0.0 * @since 1.0.0
*/ */
@ -2391,7 +2371,7 @@ class DataMapperAbstract implements DataMapperInterface
$results = $sth->fetch(\PDO::FETCH_ASSOC); $results = $sth->fetch(\PDO::FETCH_ASSOC);
return is_bool($results) ? [] : $results; return $results === false ? [] : $results;
} }
/** /**
@ -2468,7 +2448,7 @@ class DataMapperAbstract implements DataMapperInterface
$results = $sth->fetchAll(\PDO::FETCH_ASSOC); $results = $sth->fetchAll(\PDO::FETCH_ASSOC);
return is_bool($results) ? [] : $results; return $results === false ? [] : $results;
} }
/** /**
@ -2510,7 +2490,7 @@ class DataMapperAbstract implements DataMapperInterface
->leftOuterJoin($value['table']) ->leftOuterJoin($value['table'])
->on(new And('1', new And(new Or('d1', 'd2'), 'id'))) ->on(new And('1', new And(new Or('d1', 'd2'), 'id')))
->where($value['table'] . '.' . $value['dst'], '=', 'NULL'); ->where($value['table'] . '.' . $value['dst'], '=', 'NULL');
}*/ }*/
$sth = self::$db->con->prepare($query->toSql()); $sth = self::$db->con->prepare($query->toSql());
@ -2608,7 +2588,7 @@ class DataMapperAbstract implements DataMapperInterface
* *
* @since 1.0.0 * @since 1.0.0
*/ */
private static function addInitialized(string $mapper, $id, $obj = null) : void private static function addInitialized(string $mapper, $id, object $obj = null) : void
{ {
if (!isset(self::$initObjects[$mapper])) { if (!isset(self::$initObjects[$mapper])) {
self::$initObjects[$mapper] = []; self::$initObjects[$mapper] = [];
@ -2720,8 +2700,8 @@ class DataMapperAbstract implements DataMapperInterface
* *
* @since 1.0.0 * @since 1.0.0
*/ */
private static function isNullObject($obj) : bool private static function isNullObject(object $obj) : bool
{ {
return is_object($obj) && strpos(get_class($obj), '\Null') !== false; return strpos(get_class($obj), '\Null') !== false;
} }
} }

View File

@ -106,7 +106,7 @@ final class Response extends ResponseAbstract implements RenderableInterface
foreach ($types as $type) { foreach ($types as $type) {
if (\stripos($type, MimeType::M_JSON) !== false) { if (\stripos($type, MimeType::M_JSON) !== false) {
return \json_encode($this->jsonSerialize()); return (string) \json_encode($this->jsonSerialize());
} }
} }

View File

@ -297,7 +297,7 @@ class Location implements \JsonSerializable, \Serializable
*/ */
public function serialize() : string public function serialize() : string
{ {
return \json_encode($this->jsonSerialize()); return (string) \json_encode($this->jsonSerialize());
} }
/** /**

View File

@ -53,14 +53,15 @@ class PriorityQueue implements \Countable, \Serializable
/** /**
* Insert element into queue. * Insert element into queue.
* *
* @param mixed $data Queue element * @param mixed $data Queue element
* @param float $priority Priority of this element * @param string $job Job cmd
* @param float $priority Priority of this element
* *
* @return int * @return int
* *
* @since 1.0.0 * @since 1.0.0
*/ */
public function insert($data, float $priority = 1.0) : int public function insert($data, string $job, float $priority = 1.0) : int
{ {
do { do {
$key = rand(); $key = rand();
@ -78,6 +79,7 @@ class PriorityQueue implements \Countable, \Serializable
$pos++; $pos++;
} }
$original = [];
array_splice($original, $pos, 0, [$key => ['key' => $key, 'job' => $job, 'priority' => $priority]]); array_splice($original, $pos, 0, [$key => ['key' => $key, 'job' => $job, 'priority' => $priority]]);
} }
@ -184,7 +186,7 @@ class PriorityQueue implements \Countable, \Serializable
*/ */
public function serialize() : string public function serialize() : string
{ {
return \json_encode($this->queue); return (string) \json_encode($this->queue);
} }
/** /**

View File

@ -80,7 +80,7 @@ final class JsonBuilder implements \Serializable, \JsonSerializable
*/ */
public function serialize() : string public function serialize() : string
{ {
return \json_encode($this->json); return (string) \json_encode($this->json);
} }
/** /**