1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-09-20 16:31:33 +02:00
invoiceninja/app/DataMapper/BaseSettings.php
2019-10-29 22:44:54 +11:00

65 lines
1.2 KiB
PHP

<?php
/**
* Invoice Ninja (https://invoiceninja.com)
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2019. 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)
{
}
}