[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