1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-11-06 03:02:34 +01:00
invoiceninja/app/DataMapper/BaseSettings.php

64 lines
1.4 KiB
PHP

<?php
/**
* Invoice Ninja (https://invoiceninja.com).
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://opensource.org/licenses/AAL
*/
namespace App\DataMapper;
/**
* ClientSettings.
*/
class BaseSettings
{
public function __construct($obj)
{
foreach ($obj as $key => $value) {
$obj->{$key} = $value;
}
}
public static function setCasts($obj, $casts)
{
foreach ($casts as $key => $value) {
$obj->{$key} = self::castAttribute($key, $obj->{$key});
}
return $obj;
}
public static function castAttribute($key, $value)
{
switch ($key) {
case 'int':
case 'integer':
return (int) $value;
case 'real':
case 'float':
case 'double':
return (float) $value;
case 'string':
return is_null($value) ? '' : (string) $value;
case 'bool':
case 'boolean':
return (bool) ($value);
case 'object':
return json_decode($value);
case 'array':
case 'json':
return json_decode($value, true);
default:
return $value;
}
}
public static function castSingleAttribute($key, $data)
{
}
}