Return to Snippet

Revision: 66479
at May 13, 2014 03:30 by gitarfogas


Initial Code
// The input is a textfile:
// key1=val1
// key2=val2
// key3=val3
// key4=val4
//     .
//     .
//     .

// The class:

  class UserID {
    private $UIDPath;
    private $UserUIDcontent;

    public function __construct($UserID, $Action, $UID_KEY, $UID_VAL, $Back) {
      $UID_Content = $this -> UIDPath = 'the/path/to/input/text.txt';
      $UserUIDcontent = array();

      if (file_exists($UID_Content) && (is_file($UID_Content))) {
        foreach (file($UID_Content) as $UIDlines) {
          list($key, $value) = explode('=', $UIDlines, 2) + array(NULL, NULL);
          if (trim($value) !== NULL) { $UserUIDcontent[$key] = trim($value); }
        }

        if ($Action == 'Read') {
          if ($UID_KEY == NULL) {
            $this -> UserUIDcontent = $UserUIDcontent;
          } else {
            if (array_key_exists($UID_KEY, $UserUIDcontent)) {
              $this -> UserUIDcontent = $UserUIDcontent[$UID_KEY];
            } else {
              if ($UID_KEY == 'User') {
                return NULL;
              } else {
                unset($UserUIDcontent[$UID_KEY]);
                echo 'ERROR: The search key: ' . $UID_KEY . ' not available in Class: ' . __METHOD__;
                return;
              }
            }
          }
        } elseif ($Action == 'Write') {
          if (is_array($UID_KEY)) {
            if (count($UID_KEY) == count($UID_VAL)) {
              $UserUIDcontent = array_filter(array_merge($UserUIDcontent, array_combine($UID_KEY, $UID_VAL)));
            } else {
              echo 'ERROR: Keys: ' . count($UID_KEY) . ' and Values: ' . count($UID_VAL) . ' are not equal in Class: ' . __METHOD__;
              return;
            }
          } else {
            $UserUIDcontent[$UID_KEY] = $UID_VAL;
          }
          foreach ($UserUIDcontent as $key => $value) {
            if ($value !== NULL) {
              $UIDcontentTXT .= trim($key) . '=' . trim($value) . PHP_EOL;
            }
          }
          trim($UIDcontentTXT);
          $handle = fopen($UID_Content, "w");
          fwrite($handle, $UIDcontentTXT, strlen($UIDcontentTXT));
          fclose($handle);

          if ($Back != NULL) {
            if (array_key_exists($Back, $UserUIDcontent)) {
              return $this -> $UserUIDcontent = $UserUIDcontent[$Back];
            } else {
              return $this -> $UserUIDcontent = $UserUIDcontent;
            }
          } else {
            return $this -> $UserUIDcontent = NULL;
          }
        } else {
          echo 'ERROR: The second parameter ' . $Action . ' not allowed in Class: ' . __METHOD__;
          return;
        }
      } else {
        echo 'ERROR: Required data source not found for Class: ' . __METHOD__;
        return;
      }
    }

    public function result() {
      return $this -> UserUIDcontent;
    }
  }

// ---------------------------------
// instances:
// ---------------------------------

$UserData = new UserID($UserID, 'Read', NULL, NULL, NULL);
$array = $UserData -> result(); // Read full array
$val = $UserData -> result()[key2]; // Read one data

$UserData = new UserID($UserID, 'Read', 'key2', NULL, NULL);
$val = $UserData -> result(); // Read one data

$UserData = new UserID($UserID, 'Write', array('key2', 'aaaaaaaaa', 'User'), array(NULL, 'bbbbbbbb', NULL), NULL);
$UserData; // write or delete more than one data by array

$UserData = new UserID($UserID, 'Write', 'key2', NULL, NULL);
$UserData; // write or delete one data

// this is the problem:
$UserData = new UserID($UserID, 'Write', array('User', 'key2', 'key3', 'key15'), array('aaaa', NULL, 'aaa', 'value15'), 1);
$array = $UserData -> Array; // Write AND Read back full array or one key

Initial URL


Initial Description
I created this code for practice, and I looking for better and clear solution for the last instance where I can write or delete the data, but after I want to get back the content as array or the key as string. I want to use this write-read back with only one instance.

Initial Title
Read and write data to textfile

Initial Tags
class, array, text

Initial Language
PHP