Prepping everything for a PHP 8 release

This commit is contained in:
Dave Mc Nicoll 2022-10-10 14:26:27 +00:00
parent dfb84c104d
commit 0e8443b1c1
5 changed files with 35 additions and 12 deletions

View File

@ -90,6 +90,6 @@ trait DefaultAdapterTrait
break;
}
return $typeOnly ? $type : $type . ( $length ? "($length" . ( $precision ? ",$precision" : "" ) . ")" : "" );
return $typeOnly ? $type : $type . ( isset($length) ? "($length" . ( ! empty($precision) ? ",$precision" : "" ) . ")" : "" );
}
}

View File

@ -34,4 +34,9 @@ class Datetime extends \DateTime implements EntityObjectInterface {
{
return strftime($format, $this->getTimestamp());
}
public function ageAt(null|\DateTime $dateTime) : int
{
return (int) ( (int) ($dateTime ?: new DateTime())->format('Ymd') - (int) $this->format('Ymd') ) / 10000;
}
}

View File

@ -308,6 +308,12 @@ class EntityCollection extends \ArrayObject {
$this->append( $this->arrayToEntity($value) );
}
else {
foreach ($this as $duplicate) {
if ($duplicate === $value) {
return;
}
}
parent::append($value);
}
}

View File

@ -2,14 +2,10 @@
namespace Ulmus;
use Ulmus\Repository,
Ulmus\Query,
Ulmus\Common\EntityResolver,
Ulmus\Common\EntityField;
use Ulmus\{ Repository, Query, Common\EntityResolver, Common\EntityField };
use Ulmus\Annotation\Classes\{ Method, Table, Collation, };
use Ulmus\Annotation\Property\{ Field, Filter, FilterJoin, Relation, OrderBy, Where, OrWhere, Join, Virtual, On, WithJoin, };
use Ulmus\Annotation\Property\Field\{ Id, ForeignKey, CreatedAt, UpdatedAt, Datetime as DateTime, Date, Time, Bigint, Tinyint, Text, Mediumtext, Longtext, Blob, Mediumblob, Longblob };
use Ulmus\Annotation\Property\Field\{ Id, ForeignKey, CreatedAt, UpdatedAt, Datetime as DateTime, Date, Time, Bigint, Tinyint, Text, Mediumtext, Longtext, Blob, Mediumblob, Longblob, };
use Ulmus\Annotation\Property\Relation\{ Ignore as RelationIgnore };
trait EntityTrait {
@ -110,7 +106,7 @@ trait EntityTrait {
public function resetVirtualProperties() : self
{
foreach($this->resolveEntity()->properties as $prop => $property) {
if ( ! $property['builtin'] ) {
if ( empty($property['builtin']) ) {
foreach($property['tags'] as $tag) {
if ( in_array(strtolower($tag['tag']), [ 'relation', 'join', 'virtual' ] ) ) {
unset($this->$prop);
@ -273,7 +269,7 @@ trait EntityTrait {
/**
* @Ignore
*/
public function jsonSerialize() : mixed
public function jsonSerialize()
{
return $this->entityGetDataset();
}

View File

@ -294,7 +294,20 @@ class Repository
$dataset = array_change_key_case($entity->entityGetDataset(false, true));
return array_diff_assoc($oldValues ? $dataset : $array , $oldValues ? $array : $dataset );
return array_udiff_assoc($oldValues ? $dataset : $array , $oldValues ? $array : $dataset, function($e1, $e2) {
if ( is_array($e1) ) {
if (is_array($e2)) {
return Ulmus::encodeArray($e1) !== Ulmus::encodeArray($e2);
}
else {
return false;
}
}
return (string) $e1 !== (string) $e2;
});
# return array_diff_assoc($oldValues ? $dataset : $array , $oldValues ? $array : $dataset );
}
@ -606,11 +619,14 @@ class Repository
$field = clone $condition->field;
}
if ( $condition->field->entityClass === $entity ) {
/* @TODO FIX THIS !
*
* if ( $condition->field->entityClass === $entity ) {
if ( $this->entityClass === $entity ) {
$field->alias = $alias;
$join->where(is_object($field) ? $field : $entity::field($field, $alias), $condition->value, $condition->operator);
}
}*/
}
foreach($this->entityResolver->searchFieldAnnotationList($item, new FilterJoin() ) as $filter) {