/** * Transforms the string received from the database to the appropriate type. * @param string $string String from the database. May not be null. * @return mixed Type appropriate for this field. */ public function deserializeValue($string) { switch ($this->type) { case self::TYPE_INT: case self::TYPE_PRIMARY_KEY: return (int) $string; case self::TYPE_STRING: case self::TYPE_STRING_LOWERCASE: return $string; case self::TYPE_DATE: if ($string === "0000-00-00 00:00:00") { // Legacy "soft" nulls in database return null; } return DateTime::createFromFormat("Y-m-d H:i:s", $string); case self::TYPE_BOOLEAN: return (bool) $string; case self::TYPE_JSON: return JsonHelper::stringToArray($string); case self::TYPE_URI: return new Uri($string); } }
/** * Sets the extra data of the user. * @param mixed $extra_data The extra data, either empty, as an array of as * a json string. * @throws InvalidArgumentException If the extra data is not a string, array or null. */ public function setExtraData($extra_data) { if ($extra_data === null) { $this->extraData = []; return; } if (is_string($extra_data)) { if (empty($extra_data)) { $this->extraData = []; return; } $this->extraData = JsonHelper::stringToArray($extra_data); return; } if (is_array($extra_data)) { $this->extraData = $extra_data; return; } throw new InvalidArgumentException("Expected string, array or null, got " . $extra_data); }