On Tue, Jun 1, 2010 at 10:11 PM, Stas Malyshev <smalys...@sugarcrm.com>wrote:

> Hi!
>
>
>  Also, it never makes sense to convert one object type into another, and
>>
>>> almost never this operation can be defined.
>>>
>>
>>
>> array and ArrayObject?
>>
>
> This is a good example because strict typing would probably reject
> ArrayObject passed as array, thus defeating the whole purpose of having
> ArrayObject.


Yeah, I know, this is why I said.


> That's exactly why we have to be very careful with strict types in dynamic
> language - because it makes excellent dynamic extensions line ArrayObject,
> __toString, etc. useless - since you can not really use one type instead of
> another as they intend, strict typing kills that.
> Coercive typing, on the other hand, would work just fine with those.


Agree.


>
>
>  I mean it's too late to argue about that the current type hinting triggers
>> an error in case of type mismatch.
>>
>
> Actually we could change it if we wanted to, I don't believe there's really
> some code that relies on it being error for some functionality. The question
> is what we'd change it to, for which I have no good answer.
>
>
As I mentioned, I think that we have to inform the caller about the problem
(be either a type or a conversion mismatch), so the only options to trigger
an error, or throw an exception.
I like the exception idea better, because it can be easily handled localy
(no need to register a global error handler), but as the core devs said, it
isn't allowed to throw exceptions from the core, so this is why I think,
that the weak type hinting should be implemented as an spl interface.
This way we could even support array - ArrayObject conversion too.

http://wiki.php.net/rfc/splweaktypehintingwithautoboxing

The rfc name sucks, but I couldn't come up with a better one.

Tyrael

Reply via email to