mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 03:18:26 +00:00
Extract common method.
This commit is contained in:
parent
3d8a955043
commit
57d50cd018
1 changed files with 29 additions and 49 deletions
|
@ -226,7 +226,7 @@ class Set2 {
|
|||
public static function insert(array $data, $path, $values = null) {
|
||||
$tokens = explode('.', $path);
|
||||
if (strpos($path, '{') === false) {
|
||||
return self::_simpleInsert($data, $tokens, $values);
|
||||
return self::_simpleOp('insert', $data, $tokens, $values);
|
||||
}
|
||||
|
||||
$token = array_shift($tokens);
|
||||
|
@ -240,14 +240,15 @@ class Set2 {
|
|||
}
|
||||
|
||||
/**
|
||||
* Inserts values into simple paths.
|
||||
* Perform a simple insert/remove operation.
|
||||
*
|
||||
* @param array $data Data to insert into.
|
||||
* @param string $path The path to insert into.
|
||||
* @param mixed $values The values to insert.
|
||||
* @return array Data with values inserted at $path.
|
||||
* @param string $op The operation to do.
|
||||
* @param array $data The data to operate on.
|
||||
* @param array $path The path to work on.
|
||||
* @param mixed $values The values to insert when doing inserts.
|
||||
* @return array $data.
|
||||
*/
|
||||
protected static function _simpleInsert($data, $path, $values) {
|
||||
protected static function _simpleOp($op, $data, $path, $values = null) {
|
||||
$_list =& $data;
|
||||
|
||||
$count = count($path);
|
||||
|
@ -255,16 +256,27 @@ class Set2 {
|
|||
if (is_numeric($key) && intval($key) > 0 || $key === '0') {
|
||||
$key = intval($key);
|
||||
}
|
||||
if ($i === $count - 1 && is_array($_list)) {
|
||||
$_list[$key] = $values;
|
||||
} else {
|
||||
if (!isset($_list[$key])) {
|
||||
$_list[$key] = array();
|
||||
if ($op === 'insert') {
|
||||
if ($i === $count - 1 && is_array($_list)) {
|
||||
$_list[$key] = $values;
|
||||
} else {
|
||||
if (!isset($_list[$key])) {
|
||||
$_list[$key] = array();
|
||||
}
|
||||
$_list =& $_list[$key];
|
||||
}
|
||||
if (!is_array($_list)) {
|
||||
return array();
|
||||
}
|
||||
} elseif ($op === 'remove') {
|
||||
if ($i === count($path) - 1) {
|
||||
unset($_list[$key]);
|
||||
} else {
|
||||
if (!isset($_list[$key])) {
|
||||
return $data;
|
||||
}
|
||||
$_list =& $_list[$key];
|
||||
}
|
||||
$_list =& $_list[$key];
|
||||
}
|
||||
if (!is_array($_list)) {
|
||||
return array();
|
||||
}
|
||||
}
|
||||
return $data;
|
||||
|
@ -280,7 +292,7 @@ class Set2 {
|
|||
public static function remove(array $data, $path) {
|
||||
$tokens = explode('.', $path);
|
||||
if (strpos($path, '{') === false) {
|
||||
return self::_simpleRemove($data, $path);
|
||||
return self::_simpleOp('remove', $data, $tokens);
|
||||
}
|
||||
|
||||
$token = array_shift($tokens);
|
||||
|
@ -296,38 +308,6 @@ class Set2 {
|
|||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove values along a simple path.
|
||||
*
|
||||
* @param array $data Array to operate on.
|
||||
* @param string $path The path to remove.
|
||||
* @return array Data with value removed.
|
||||
*/
|
||||
protected static function _simpleRemove($data, $path) {
|
||||
if (empty($path)) {
|
||||
return $data;
|
||||
}
|
||||
if (!is_array($path)) {
|
||||
$path = explode('.', $path);
|
||||
}
|
||||
$_list =& $data;
|
||||
|
||||
foreach ($path as $i => $key) {
|
||||
if (is_numeric($key) && intval($key) > 0 || $key === '0') {
|
||||
$key = intval($key);
|
||||
}
|
||||
if ($i === count($path) - 1) {
|
||||
unset($_list[$key]);
|
||||
} else {
|
||||
if (!isset($_list[$key])) {
|
||||
return $data;
|
||||
}
|
||||
$_list =& $_list[$key];
|
||||
}
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
public static function combine(array $data, $keyPath, $valuePath = null) {
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue