1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/dolibarr_ynh.git synced 2024-09-03 18:35:53 +02:00
dolibarr_ynh/sources/dolibarr/htdocs/includes/restler/Data/ValueObject.php
Laurent Peuch e6008fc691 init
2015-09-28 22:09:38 +02:00

61 lines
1.7 KiB
PHP

<?php
namespace Luracast\Restler\Data;
/**
* ValueObject base class, you may use this class to create your
* iValueObjects quickly
*
* @category Framework
* @package Restler
* @author R.Arul Kumaran <arul@luracast.com>
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
* @version 3.0.0rc5
*/
class ValueObject implements iValueObject
{
public function __toString()
{
return ' new ' . get_called_class() . '() ';
}
public static function __set_state(array $properties)
{
$class = get_called_class();
$instance = new $class ();
$vars = get_object_vars($instance);
foreach ($properties as $property => $value) {
if (property_exists($instance, $property)) {
// see if the property is accessible
if (array_key_exists($property, $vars)) {
$instance->{$property} = $value;
} else {
$method = 'set' . ucfirst($property);
if (method_exists($instance, $method)) {
call_user_func(array(
$instance,
$method
), $value);
}
}
}
}
return $instance;
}
public function __toArray()
{
$r = get_object_vars($this);
$methods = get_class_methods($this);
foreach ($methods as $m) {
if (substr($m, 0, 3) == 'get') {
$r [lcfirst(substr($m, 3))] = @$this->{$m} ();
}
}
return $r;
}
}