/**
   * @param array $entries
   * @return DirectoryEntries
   * @throws \InvalidArgumentException
   */
  public static function fromArray($entries) {
    $cleanEntries = array();

    foreach($entries as $entry) {
      if(!isset($entry['id'], $entry['label'])) {
        throw new \InvalidArgumentException(DirectoryEntry::MSG_ID_LABEL_MANDATORY);
      }
      $cleanEntries[] = $clean = new DirectoryEntry($entry['id'], $entry['label']);

      isset($entry['obsolete']) ? $clean->setObsolete($entry['obsolete']):null;
      isset($entry['ordering']) ? $clean->setOrdering($entry['ordering']):null;
    }

    return new DirectoryEntries($cleanEntries);
  }