Re: [PATCH] Scalar type hinting ;)
| From: | Ron Korving | Date: | Tue, 07 Nov 2006 10:19:30 +0000 |
| Subject: | Re: [PATCH] Scalar type hinting ;) | ||
| References: | 1 2 3 4 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-26399@lists.php.net to get a copy of this message | ||
I wouldn't like E_NOTICE. I agree that the result should be a NULL value if
a conversion fails, but E_NOTICE shouldn't be mixed in the area of user
data. All error reporting should be limited to code, not input. I don't want
the users of my software to be able to trigger E_NOTICE (or any error for
that matter). I write code that ensures that no error/warning/notice will
ever be triggered no matter what a user does.
I don't see a point in a hint called "mixed" either. You might as well not
use a hint for that particular function parameter.
Just my 2 cents.
Regards,
Ron Korving
""Richard Quadling"" <rquadling@googlemail.com> schreef in bericht
news:10845a340611070126hdd3cfe1v4f62a37d98f620e1@mail.gmail.com...
> Not in direct reply to any message.
>
> Type hinting is on for classes and arrays (maybe resources too - not
> sure - but certainly a good idea if not). Why? From my perspective, it
> allows me to not deal with potential errors either in the data or my
> coding or another developers coding.
>
> Type hinting is part of the documentation. Sure, hungarian notation of
> variable names (where the type is represented within the variable name
> itself) is a good start, but when you get to things like a 4d array of
> string and integer pairs, you get more notation than variable name.
>
> Extending type hinting to scalars is the next step. The loose typing
> of PHP is great, but as mentioned by Richard Lynch, we have to more or
> less move away from it for user input and DB input.
>
> Even when we store data in the session it is stored in type, so,
> pretty much after getting the source data to operate on, the type is
> fixed.
>
> You don't store a number in the session and get it back as a string to
> convert back to a number in the next session usage. You store a
> number, you get a number back.
>
> So, where is the use for loose type? You can't loose type objects or
> arrays or resource. You no longer need to loose type user input or DB
> input (cause you are now using SOME sort of input filtering
> mechanism).
>
>
> An issue is very much where you have mixed types (which many of the
> PHP functions support). How do you hint this? You could either used
> mixed or blank, but maybe you can supply multiple types which the
> function will support.
>
> Maybe for V6 type hinting for scalars could be available, but output
> purely E_NOTICE. Really make them just a hint. A suggestion. This will
> allow auto documentors get to grips with things, allow code complete
> editors deal with user defined functions, etc.
>
> Sometime after that the facility to make the hints become enforcers.
> There would be a published list of conversion mechanisms (the
> equivalent PHP function in effect). You could potentially allow user
> defined conversions for user defined types though I would see this as
> a WIBNI, rather than a MH.
>
> If you don't have any hints then nothing changes. If you do have
> hints, then you would have to accept the hit in the additional
> checking. If you have the enforcement, then you would have to deal
> with the NULLs that would result in failed conversions (I would
> recommend NULL rather than any other value for failed conversions).
>
>
>
>
> --
> -----
> Richard Quadling
> Zend Certified Engineer :
> http://zend.com/zce.php?c=ZEND002498&r=213474731
> "Standing on the shoulders of some very clever giants!"