<?php

// e.g. metadata on Stripe objects.
class Stripe_AttachedObject extends Stripe_Object
{
  /**
   * Updates this object.
   *
   * @param array $properties A mapping of properties to update on this object.
   */
  public function replaceWith($properties)
  {
    $removed = array_diff(array_keys($this->_values), array_keys($properties));
    // Don't unset, but rather set to null so we send up '' for deletion.
    foreach ($removed as $k) {
      $this->$k = null;
    }

    foreach ($properties as $k => $v) {
      $this->$k = $v;
    }
  }
}