Beispiel #1
0
 public static function copyKeys($source, $target, $excludeKeys = null, $includeKeys = null)
 {
     $sourceIsObject = is_object($source);
     $targetIsObject = is_object($target);
     if (is_string($excludeKeys)) {
         $excludeKeys = array($excludeKeys => true);
     } elseif (is_array($excludeKeys)) {
         $excludeKeys = ArrayTools::convertToKeyArray($excludeKeys);
     }
     if (is_string($includeKeys)) {
         $includeKeys = array($includeKeys => true);
     } elseif (is_array($includeKeys)) {
         $includeKeys = ArrayTools::convertToKeyArray($includeKeys);
     }
     if ($includeKeys !== null && $excludeKeys === null) {
         foreach ($includeKeys as $key => $foo) {
             if ($sourceIsObject) {
                 $val = $source->{$key};
             } else {
                 $val = $source[$key];
             }
             if ($targetIsObject) {
                 $target->{$key} = $val;
             } else {
                 $target[$key] = $val;
             }
         }
     } else {
         $keys = array();
         if ($sourceIsObject) {
             foreach ($source as $key => $value) {
                 $keys[$key] = $value;
             }
         } else {
             $keys =& $source;
         }
         foreach ($keys as $key => $val) {
             $included = null;
             if ($includeKeys !== null) {
                 $included = isset($includeKeys[$key]);
             }
             if ($excludeKeys !== null) {
                 if (isset($excludeKeys[$key]) && !$included) {
                     continue;
                 }
             } else {
                 if ($includeKeys !== null && !$included) {
                     continue;
                 }
             }
             if ($targetIsObject) {
                 $target->{$key} = $val;
             } else {
                 $target[$key] = $val;
             }
         }
     }
     return $target;
 }