Zeev,

On Thu, Feb 26, 2015 at 2:18 PM, Zeev Suraski <z...@zend.com> wrote:

> > -----Original Message-----
> > From: Mike Willbanks [mailto:pen...@gmail.com]
> > Sent: Thursday, February 26, 2015 9:46 PM
> > To: Anthony Ferrara
> > Cc: Dan Ackroyd; Zeev Suraski; Theodore Brown; internals@lists.php.net
> > Subject: Re: [PHP-DEV] A different user perspective on scalar type
> > declarations
> >
> > Anthony,
> >
> >
> > On Thu, Feb 26, 2015 at 1:29 PM, Anthony Ferrara <ircmax...@gmail.com>
> > wrote:
> >
> >
> >       Mike,
> >
> >       One point of clarification:
> >
> >       > This is true, however, the types that you are receiving back
> form a
> >       > multitude of data sources might be in a mixed format (databases
> > for example
> >       > often provide representation back as a string, non-json based web
> > services
> >       > provide mainly as a string, etc).   While I know what my data
> looks
> > like
> >       > and I know I am always going to get a "string" integer back I do
> not
> > want
> >       > to have to type cast this each and every time.  Or that I have a
> > boolean
> >       > integer representation that is in a string... You get the point.
> > Sure,
> > I
> >       > could certainly go in and take 5 minutes and cast each one but
> I'm
> > not
> >       > certain why the purpose is there... It specifically changes the
> >       > determination that PHP is a weakly typed language and all of a
> > sudden I now
> >       > need to care that my string integer boolean is not actually a
> > boolean.
> >
> >       It's funny that you bring up boolean...
> >
> >       With the current coercive proposal, you will still need to worry
> about
> >       the types: https://wiki.php.net/rfc/coercive_sth#coercion_rules
> >
> >
> > For some unbeknown reason I was inside of my head going ok, i have a
> > string
> > integer so that would make an integer and then it would make a boolean.
> > Thank you for pointing out my obvious miss there :)
> >
> >
> >
> >
> >       Passing boolean(false) where an integer is expected will generate
> an
> >       error. This is a common practice, specifically around internal
> >       functions. Example:
> >       https://github.com/sebastianbergmann/phpunit/blob/a4e23a10d4ee
> > ea5fd9fe8916859a07430b94cf42/src/Util/ErrorHandler.php#L58
> >
> >       So yes, you'll still need to go in and cast each one **in both
> RFCs**
> >       (or handle the errors properly).
> >
> >
> >
> > This is certainly a common case, actually quite often for database
> > purposes
> > do we need to handle booleans to integer conversions which my integer
> > comes back as a string (depending on which extension of course) and which
> > type field it is.
>
> Can you explain that in a bit more detail?  What's the data flow exactly,
> in
> both directions?
>

Here is the most basic example and something that people are going to often
run into.  You see this type of code with hydrators, mappers, etc.
Ultimately the end result is going to be the same:

https://gist.github.com/mwillbanks/04e3be68f737c25984ab

I'm not certain if there is a need to explain that bit a bit more.  But a
string "1" as a bool should work as with a string "0".  For instance, today
we have the following for both string's 0 and 1:

$bool = "0";
var_dump($bool); // "0""
var_dump($bool == false); // true
var_dump($bool == true); // false
var_dump($bool == 0); // true
var_dump($bool == 1); // false


>
> Thanks!
>
> Zeev
>

Reply via email to