[TYPO3-core] RFC: #10040: define Default GET-vars
Oliver Hader
oliver at typo3.org
Tue Sep 1 17:41:05 CEST 2009
Hi Steffen,
Steffen Kamper schrieb:
> Hi,
>
> just a reminder for a core dev
+2070» » » //·merge·GET·with·defaultGetVars
+2071» » if·(is_array($this->config['config']['defaultGetVars.']))·{
+2072» » » $getVars·=·t3lib_div::_GET();
+2073» » »
$defaultGetVars·=·t3lib_div::removeDotsFromTS($this->config['config']['defaultGetVars.']);
+2074» » »
$newGetVars·=·t3lib_div::array_merge_recursive_overrule($defaultGetVars,·is_array($getVars)·?·$getVars·:·array());
+2075» » » if·(count(array_diff($getVars,·$newGetVars)))·{
+2076» » » » t3lib_div::_GETset($getVars);
+2077» » » }» »
+2078» » }
Interesting that there are already two positive votes on reading.
My remarks:
1) the patch sets the identical GET vars again that are alreay set - it
uses $getVars instead of $newGetVars
2) The superglobal $_GET is always an array, even in CLI mode where no
GET vars are available - the is_array() check is superflouos here
3) array_diff() returns the differences of values and only those that
are present in the first argument (the original GET vars)
3a) we should use array_diff_assoc()
3b) we should search the difference in the bigger array thus using
$newGetVars as first parameter
3c) array_diff_assoc will not recognize changes on nested keys, e.g
&argument[key1]=1 and defaultGetVars.argument.key2=2
3d) we don't need the diff at all, since the merging already extends the
original array and overrides keys recursively if they are defined in
defaultGetVars
I changed the mentioned things in my attached patch.
+1 on reading and testing
Again, I'd like to have another "+1 on reading and testing" from anyone.
Thanks!
olly
--
Oliver Hader
TYPO3 Release Manager 4.3
More information about the TYPO3-team-core
mailing list