mirror of
https://github.com/Karaka-Management/phpOMS.git
synced 2026-05-28 20:18:40 +00:00
Static test fixes
This commit is contained in:
parent
0614c12eef
commit
e76606d0a3
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user