[TYPO3-core] RFC: #7350:PHP5ize class.t3lib_div.php

Steffen Kamper steffen at sk-typo3.de
Sat Feb 2 13:09:49 CET 2008


"Martin Kutschker" <martin.kutschker-n0spam at no5pam-blackbox.net> schrieb im 
Newsbeitrag 
news:mailman.1.1201953979.13365.typo3-team-core at lists.netfielders.de...
> Martin Kutschker schrieb:
>> Michael Stucki schrieb:
>>> Hi Dmitry,
>>>
>>>> Stanislas Rolland wrote:
>>>>> tslib_content fails:
>>>>>
>>>>> Catchable fatal error: Argument 1 passed to
>>>>> t3lib_div::implodeAttributes() must be an array, null given, called in
>>>>> /typo3/sysext/cms/tslib/class.tslib_content.php on line 4471
>>>> t3lib_div::get_tag_attributes did not work according to documentation. 
>>>> Fix
>>>> is attached. It may be sensitive, so I post here instead of
>>>> autocommitting.
>>>>
>>>> Anyway, I feel bad about mixng return value and no return value inside 
>>>> one
>>>> function, which is declared as always returning value.
>>>
>>> How about returning false instead of an empty array?
>>
>> But no attributes at all are no failure. An empty array is exactly what 
>> the function should return.
>>
>>> Someone who is using it
>>> now could have checked the output using is_array(), which would match 
>>> now.
>>
>> Well, in tslib_context it's like this;
>>
>> if (!is_array($returnedAttributes)) {
>>   $returnedAttributes = array();
>> }
>>
>> I guess other could would work similar.
>>
>>> Additional comments.
>>>
>>> Have a look at t3lib_div::xmlGetHeaderAttribs() - it says that it 
>>> returns
>>> string values, but the output is coming directly from 
>>> get_tag_attributes().
>>> Don't know if the phpdoc comment is wrong, at least I don't see how
>>> get_tag_attributes() could ever return a string output. But we need to
>>> check it thoroughly.
>>
>> Ouch, the function has issues (ie it cannot work at all). It simply looks 
>> for the XML prologue and feeds it into get_tag_attributes. may the code 
>> that was initially written deals with the real return value.
>>
>> But as it is, it's broken completely. Mybe we can check, when it went 
>> into the Core and who is actually using it.
>
> Ok, there are two uses in the Core. Both uses expect an array. They use 
> later on a $attrArr['encoding']. Interestingly both occurences do 
> lowercase the encoding themselves, so the lowercasing, which is IMHO 
> wrongly used here (it will destroy possibly required cases), can be 
> removed.
>
> My conclusion: Dmitry's fix is correct. Folks expect get_tag_attributes() 
> to return an array, so let's do it. The docs for xmlGetHeaderAttribs() are 
> wrong. I suggest to change it, and also to remove lower casing of the xml 
> prologue.
>
> Masi

it's good to have a change here, this shows, that it helps to find uncorrect 
handling of return values in other places.
In this case function should return empty array and wrong handling in 
calling function should be corrected.

vg  Steffen 




More information about the TYPO3-team-core mailing list