Hi!

> Please be kind to review and comment my proposal for custom casting in PHP
> (or let me know if a similar proposal was already discussed).
> 
> http://pastebin.com/sPb0i8U6

I think there's an issue with this idea. As far as I understand, what is
proposed is kind of cast-constructor paradigm. However, the result of
(ClassName)$var would be expected to be an object of type ClassName.
That is, however, not what cast() returns - it returns integer $var.
Since there's no way for foo(ClassName $var) to know where $var came
from, the result of $var = (ClassName)$var; is just a simple integer and
foo() would reject it since it's not an object of type ClassName.

Of course, you could just create this instead:

class PositiveInteger {
  private $i;
  function __construct($i) {
     if(intval($i) < 1) $i = 1;
     $this->i = $i;
  }
  function intval() {
     return $this->i;
  }
}

function foo(PositiveInteger $i) { return 2*sqrt($i->intval()); }

and then:

foo(new PositiveInteger(42));

But this is doable right now, even if sounds a bit of overkill for me. I
wouldn't mind also having (int)$i done with some magic methods, as
proposed in RFCs you mentioned.

-- 
Stanislav Malyshev, Software Architect
SugarCRM: http://www.sugarcrm.com/
(408)454-6900 ext. 227

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to