Obj::set()
\nn\t3::Obj()->set($obj, $key = '', $val = '', $useSetter = true);
Sets a value in an object or array.
\nn\t3::Obj()->set( $obj, 'title', $val );
Copied!
@param mixed $obj Model or array
@param string $key the key / property
@param mixed $val the value to be set
@param boolean $useSetter setKey() method to use for setting
| @return mixed
Source Code
public function set( $obj, $key = '', $val = '', $useSetter = true)
{
$settable = ObjectAccess::isPropertySettable($obj, $key);
if (!$settable) {
$key = GeneralUtility::underscoredToLowerCamelCase( $key );
$settable = ObjectAccess::isPropertySettable($obj, $key);
}
if ($settable) {
if (is_object($obj)) {
$modelProperties = $this->getProps($obj);
if ($type = $modelProperties[$key] ?? false) {
// SysFileReference wird gebraucht, aber SysFile wurde übergeben?
if (is_a($type, FalFileReference::class, true )) {
if (!$val) {
$val = '';
} else if ($this->isFile( $val )) {
$val = \nn\t3::Fal()->fromFalFile( $val );
}
}
// ObjectStorage soll geleert werden?
if (is_a($type, ObjectStorage::class, true )) {
$val = new ObjectStorage();
}
switch ($type) {
case 'int':
$val = (int)$val;
break;
case 'float':
$val = (float)$val;
break;
}
}
}
if (in_array($key, ['deleted', 'hidden'])) $val = $val ? true : false;
ObjectAccess::setProperty($obj, $key, $val, !$useSetter);
}
return $obj;
}
Copied!