Skip to content

Commit

Permalink
Improve signature of setFieldValue() method
Browse files Browse the repository at this point in the history
  • Loading branch information
ilijastuden committed Apr 25, 2022
1 parent 4ba3bd4 commit 6c2ad28
Show file tree
Hide file tree
Showing 6 changed files with 36 additions and 53 deletions.
6 changes: 1 addition & 5 deletions src/Entity/Entity.php
Original file line number Diff line number Diff line change
Expand Up @@ -713,12 +713,8 @@ public function getOldFieldValue($field)
* Set value of the $field. This function will make sure that everything
* runs fine - modifications are saved, in case of primary key old value
* will be remembered in case we need to update the row and so on
*
* @param string $field
* @param mixed $value
* @return $this
*/
public function &setFieldValue($field, $value)
public function setFieldValue(string $field, mixed $value): static
{
if ($this->entityFieldExists($field)) {
if ($field === 'id') {
Expand Down
7 changes: 1 addition & 6 deletions src/Entity/EntityInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -245,13 +245,8 @@ public function revertField($field);
* Set value of the $field. This function will make sure that everything
* runs fine - modifications are saved, in case of primary key old value
* will be remembered in case we need to update the row and so on
*
* @param string $field
* @param mixed $value
* @return mixed
* @throws InvalidArgumentException
*/
public function &setFieldValue($field, $value);
public function setFieldValue(string $field, mixed $value): static;

/**
* Set non-field value during DataManager::create() and DataManager::update() calls.
Expand Down
20 changes: 10 additions & 10 deletions test/src/Fixtures/SpatialEntity/Base/SpatialEntity.php
Original file line number Diff line number Diff line change
Expand Up @@ -181,27 +181,27 @@ public function getFieldValue($field, $default = null)
}
}

public function &setFieldValue($name, $value)
public function setFieldValue(string $field, mixed $value): static
{
if ($value === null) {
parent::setFieldValue($name, null);
parent::setFieldValue($field, null);
} else {
switch ($name) {
switch ($field) {
case 'id':
case 'name':
return parent::setFieldValue($name, (string) $value);
return parent::setFieldValue($field, (string) $value);
case 'day':
return parent::setFieldValue($name, $this->getDateTimeValueInstanceFrom($value));
return parent::setFieldValue($field, $this->getDateTimeValueInstanceFrom($value));
case 'stats':
return parent::setFieldValue($name, $this->isLoading() ? $value : json_encode($value));
return parent::setFieldValue($field, $this->isLoading() ? $value : json_encode($value));
default:
if ($this->isLoading()) {
return parent::setFieldValue($name, $value);
return parent::setFieldValue($field, $value);
} else {
if ($this->isGeneratedField($name)) {
throw new \LogicException("Generated field $name cannot be set by directly assigning a value");
if ($this->isGeneratedField($field)) {
throw new \LogicException("Generated field $field cannot be set by directly assigning a value");
} else {
throw new \InvalidArgumentException("Field $name does not exist in this table");
throw new \InvalidArgumentException("Field $field does not exist in this table");
}
}
}
Expand Down
20 changes: 10 additions & 10 deletions test/src/Fixtures/StatSnapshots/Base/StatsSnapshot.php
Original file line number Diff line number Diff line change
Expand Up @@ -197,27 +197,27 @@ public function getFieldValue($field, $default = null)
}
}

public function &setFieldValue($name, $value)
public function setFieldValue(string $field, mixed $value): static
{
if ($value === null) {
parent::setFieldValue($name, null);
parent::setFieldValue($field, null);
} else {
switch ($name) {
switch ($field) {
case 'id':
case 'account_id':
return parent::setFieldValue($name, (int) $value);
return parent::setFieldValue($field, (int) $value);
case 'day':
return parent::setFieldValue($name, $this->getDateTimeValueInstanceFrom($value));
return parent::setFieldValue($field, $this->getDateTimeValueInstanceFrom($value));
case 'stats':
return parent::setFieldValue($name, $this->isLoading() ? $value : json_encode($value));
return parent::setFieldValue($field, $this->isLoading() ? $value : json_encode($value));
default:
if ($this->isLoading()) {
return parent::setFieldValue($name, $value);
return parent::setFieldValue($field, $value);
} else {
if ($this->isGeneratedField($name)) {
throw new \LogicException("Generated field $name cannot be set by directly assigning a value");
if ($this->isGeneratedField($field)) {
throw new \LogicException("Generated field $field cannot be set by directly assigning a value");
} else {
throw new \InvalidArgumentException("Field $name does not exist in this table");
throw new \InvalidArgumentException("Field $field does not exist in this table");
}
}
}
Expand Down
16 changes: 6 additions & 10 deletions test/src/Fixtures/Users/Base/User.php
Original file line number Diff line number Diff line change
Expand Up @@ -190,28 +190,24 @@ public function &setPassword($value)

/**
* Set value of specific field.
*
* @param string $name
* @param mixed $value
* @return $this
*/
public function &setFieldValue($name, $value)
public function setFieldValue(string $field, mixed $value): static
{
if ($value === null) {
parent::setFieldValue($name, null);
parent::setFieldValue($field, null);
} else {
switch ($name) {
switch ($field) {
case 'id':
return parent::setFieldValue($name, (int) $value);
return parent::setFieldValue($field, (int) $value);
case 'type':
case 'first_name':
case 'last_name':
case 'email':
case 'homepage_url':
case 'password':
return parent::setFieldValue($name, (string) $value);
return parent::setFieldValue($field, (string) $value);
default:
throw new \InvalidArgumentException("Field $name does not exist in this table");
throw new \InvalidArgumentException("Field $field does not exist in this table");
}
}

Expand Down
20 changes: 8 additions & 12 deletions test/src/Fixtures/Writers/BaseWriter.php
Original file line number Diff line number Diff line change
Expand Up @@ -154,31 +154,27 @@ public function &setUpdatedAt($value)

/**
* Set value of specific field.
*
* @param string $name
* @param mixed $value
* @return mixed
*/
public function &setFieldValue($name, $value)
public function setFieldValue(string $field, mixed $value): static
{
if ($value === null) {
parent::setFieldValue($name, null);
parent::setFieldValue($field, null);
} else {
switch ($name) {
switch ($field) {
case 'id':
parent::setFieldValue($name, (int) $value);
parent::setFieldValue($field, (int) $value);
break;
case 'name':
parent::setFieldValue($name, (string) $value);
parent::setFieldValue($field, (string) $value);
break;
case 'birthday':
parent::setFieldValue($name, $this->getDateValueInstanceFrom($value));
parent::setFieldValue($field, $this->getDateValueInstanceFrom($value));
break;
case 'created_at':
case 'updated_at':
return parent::setFieldValue($name, $this->getDateTimeValueInstanceFrom($value));
return parent::setFieldValue($field, $this->getDateTimeValueInstanceFrom($value));
default:
throw new InvalidArgumentException("'$name' is not a known field");
throw new InvalidArgumentException("'$field' is not a known field");
}
}

Expand Down

0 comments on commit 6c2ad28

Please sign in to comment.