/**
  * @group unit
  */
 public function testCastObjectToArray()
 {
     $object = new CastObjectToArrayTest();
     $object->dynamicVariable = 'dynamicVariable';
     $objectArray = tx_mklib_util_Array::castObjectToArray($object);
     $this->assertEquals('publicVariable', $objectArray['publicVariable'], 'publicVariable falsch gecastet');
     $this->assertEquals('protectedVariable', $objectArray['protectedVariable'], 'protectedVariable falsch gecastet');
     $this->assertEquals('privateVariable', $objectArray['privateVariable'], 'privateVariable falsch gecastet');
     $this->assertEquals('publicStaticVariable', $objectArray['publicStaticVariable'], 'publicStaticVariable falsch gecastet');
     $this->assertEquals('protectedStaticVariable', $objectArray['protectedStaticVariable'], 'protectedStaticVariable falsch gecastet');
     $this->assertEquals('privateStaticVariable', $objectArray['privateStaticVariable'], 'privateStaticVariable falsch gecastet');
     $this->assertEquals('dynamicVariable', $objectArray['dynamicVariable'], 'dynamicVariable falsch gecastet');
 }
 /**
  * Prüft ob ein Wort der Wortliste im gegebenen String vorkommt
  *
  * @param string $word
  * @param $wordlist
  * @param $greedy | alle oder nur ein Treffer?
  * @param $sanitizeWord | alle Sonderzeichen vor der Prüfung entfernen
  *
  * @return null || array || string
  */
 private function checkForWordInWordlist($word, $wordlist, $greedy = true, $sanitizeWord = true)
 {
     //wenn es kein array ist, dann is die wordlist leer
     if (!is_array($wordlist)) {
         return NULL;
     }
     if ($sanitizeWord) {
         //alle Sondzeichen entfernen
         $utilString = tx_rnbase::makeInstance('tx_mklib_util_String');
         $word = $utilString->html2plain($word);
         $word = $utilString->removeNoneLetters($word);
     }
     //die einzelnen Wörter prüfen
     foreach ($wordlist as $entry) {
         //damit in DB nicht für jedes Wort ein Eintrag angelegt werden muss,
         //werden komma-separierte Wörterlisten innerhalb des Wort-Feldes
         //ebenfalls unterstützt --> str_replace
         $sWordlist .= $sEntry = str_replace(',', '|', $entry->getWord());
         // '\b' bedeutet das nur nach ganzen Wörtern gesucht wird. ist f**k
         //geblacklisted wird sfuck nicht bemängelt
         if (!$greedy && preg_match('/\\b(' . $sEntry . ' )\\b/i', $word, $matches)) {
             //nur einen treffer?
             return $matches[0];
         }
         $sWordlist .= '|';
         //für die regexp
     }
     // '\b' bedeutet das nur nach ganzen Wörtern gesucht wird. ist f**k
     //geblacklisted wird sfuck nicht bemängelt
     if ($greedy && preg_match_all('/\\b(' . $sWordlist . ')\\b/i', $word, $matches)) {
         //alle treffer?
         tx_rnbase::load('tx_mklib_util_Array');
         //preg_mactch_all gibt ein array zurück, was auch viele leere Werte für die Nicht-Treffer enthält. Diese stören und werden bereinigt
         return tx_mklib_util_Array::removeEmptyArrayValuesSimple($matches[0]);
     }
     //kein Treffer!!!
     return null;
 }
 /**
  * Erzeugt einen technisch richtigen Float-Wert.
  * Bei floatval() werden die Eistellungen über setlocal beachtet.
  * Wurde das beispielsweise auf Deutsch gesetzt, wird aus 5.45 > 5,45.
  * Das Komma macht dann Beispielsweise DB-Abfragen kaputt/fehlerhaft.
  *
  * @author Michael Wagner <*****@*****.**>
  *
  * @param string $number
  * @param array $config
  * @return string der float wert als String.
  */
 public static function floatVal($number, array $config = array())
 {
     $float = self::parseFloat($number);
     $string = (string) $float;
     // Hier ist die aktuelle Definition für die Umwandlung von Floats enthalten
     $local = localeconv();
     // Das sind die Zeichen, mit denen wir die aus der localeconv ersetzen.
     $config = array_merge(array('decimal_point' => '.', 'mon_decimal_point' => '.', 'thousands_sep' => '', 'mon_thousands_sep' => '', 'int_curr_symbol' => '', 'currency_symbol' => '', 'positive_sign' => '', 'negative_sign' => '-'), $config);
     // Erstmal ersetzen wir die Leerzeichen!
     $string = preg_replace('/\\s/', '', $string);
     // Jetzt ersetzen wir Currencies und Signs! (EUR $ + -)
     $string = str_replace(array($local['int_curr_symbol'], $local['currency_symbol'], $local['positive_sign'], $local['negative_sign']), array($config['int_curr_symbol'], $config['currency_symbol'], $config['positive_sign'], $config['negative_sign']), $string);
     // Jetzt wird es komplizierter:
     // Wir müssen anhand eines pregreplace, die Werte teilen.
     // Das machen wir, da wir mit string replace aus 4.999,95
     // immer 4.999.95 oder 4,999,95 machen würden.
     $mapping = array($local['mon_decimal_point'] => $config['mon_decimal_point'], $local['mon_thousands_sep'] => $config['mon_thousands_sep'], $local['decimal_point'] => $config['decimal_point'], $local['thousands_sep'] => $config['thousands_sep']);
     // Wir entfernen leere Einträge.
     // Die können nicht ersetzt werden und verursachen Fehler
     tx_rnbase::load('tx_mklib_util_Array');
     $preg = tx_mklib_util_Array::removeEmptyValues(array_keys($mapping));
     $preg = '/(' . implode('|\\', $preg) . ')/';
     // Wir splitten nun die Werte auf.
     // Dabei werden alle Trennzeichen mitgegeben und leere Werte entfernt!
     $matches = preg_split($preg, $string, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
     // Wir ersetzen nun die entsprechenden Zeichen.
     foreach ($matches as &$part) {
         foreach ($mapping as $from => $to) {
             if ($part == $from) {
                 $part = $to;
                 break;
             }
         }
     }
     // Jetzt nur noch zusammenführen und Fertig!
     return implode('', $matches);
 }