Re: Mixed return type - boolean and array/resource/closure or object
| From: | Christoph Becker | Date: | Thu, 06 Mar 2014 12:30:56 +0000 |
| Subject: | Re: Mixed return type - boolean and array/resource/closure or object | ||
| References: | 1 2 3 4 5 6 7 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-323040@lists.php.net to get a copy of this message | ||
Robert Stoll wrote:
>> -----Original Message-----
>> From: Christoph Becker [mailto:cmbecker69@gmx.de]
>> Sent: Wednesday, March 05, 2014 5:37 PM
>> To: Robert Stoll; 'Sebastian Krebs'
>> Cc: 'PHP General List'
>> Subject: Re: [PHP] Mixed return type - boolean and array/resource/closure or object
>>
>> Robert Stoll wrote:
>>
>>> Nevertheless, the signature in the documentation implies that
>>> date_create() returns always DateTime. I already submitted a patch to
>>> change it to mixed :)
>>
>> IMHO, the signature is fine, as false is returned only in *exceptional*
>> cases. To be strict, changing the return type to mixed had to be done
>> for (nearly) *all* functions, because several may return false in error
>> cases, and many will return null when wrong arguments are passed.
>
> I see your point. But IMO it is confusing that something else is returned than mentioned in the
> signature. I always take
> strpos as a reference (it has mixed as return type). Yet, mixed is not really precise and I
> think it would be better to
> have something like "int|false" or a shorter form, maybe "int!" to indicate
> that either int or false is returned.
>
> Changing strpos to int would be wrong IMO. I want to see at one glance from the signature of
> the function what it
> returns. As I said mixed is not ideal either since I have to scroll down to 'Return
> Values' but better than confusing
> me.
>
> About null, I see null as part of an object type. I know that many people would not agree on
> this one but for me it
> makes sense.
I was referring to the following note regarding built-in functions[1]:
| If the parameters given to a function are not what it expects, such
| as passing an array where a string is expected, the return value of
| the function is undefined. In this case it will likely return NULL
| but this is just a convention, and cannot be relied upon.
[1] <http://www.php.net/manual/en/functions.internal.php>
--
Christoph M. Becker