src/TypedClass.php
public function replace($in): void
	{
		$this->_massageBlockInput($in);

		if (empty($in)) {
			return;
		}

		foreach ($in as $k => $v) {
			if ($this->_keyExists($k)) {
				if ($this->{$k} instanceof TypedAbstract) {
					$this->{$k}->replace($v);
				}
				else {
					$this->_setByName($k, $v);
				}
			}
		}

		$this->_checkRelatedProperties();
	}
public function replace($in): void
	{
		$this->_massageBlockInput($in);

		if (empty($in)) {
			return;
		}

		foreach ($in as $k => $v) {
			if ($this->_keyExists($k)) {
				if ($this->{$k} instanceof TypedAbstract) {
					$this->{$k}->replace($v);
				}
				else {
					$this->_setByName($k, $v);
				}
			}
		}

		$this->_checkRelatedProperties();
	}
Deep replace local values with matches from input.

Copies all matching property names while maintaining original types and
doing a deep copy where appropriate.
This method silently ignores extra properties in $input,
leaves unmatched properties in this class untouched, and
skips names starting with an underscore.

Input can be an object, or an indexed or associative array.

@param object|array|string|bool|null $in

@return void