Edit report at https://bugs.php.net/bug.php?id=46128&edit=1
ID: 46128 Comment by: mkutschker-php at yahoo dot com Reported by: 131 dot php at cloudyks dot org Summary: Magic function __cast($to) Status: Open Type: Feature/Change Request Package: Feature/Change Request Operating System: Linux PHP Version: 5.2.6 Block user comment: N Private report: N New Comment: While __toXxx() may more in line with the existing __toString() IMHO __cast() is more in line with the other magic functions and gettype(). If I could choose I'd take __cast() and deprectate __toString(). Previous Comments: ------------------------------------------------------------------------ [2012-11-09 16:00:11] shabazzk at gmail dot com My suggestion is to replace `__cast($to)` with `__toObject($object)` (or even `__toSelf($object)`). That way, we have a magic method for each type to cast to, and we avoid the messy switch/if statements. ------------------------------------------------------------------------ [2012-09-05 21:01:02] maciej dot sz at gmail dot com I think we all need this badly. It just suits the direction in which the 5.4 is going. Regarding same functionality I think it is worth nothing that the conversion to boolean should be implicit. Otherwise such code could not work: <?php function check($response) { if ( ! $response ) die('error'); } $resp = new Response(); check($resp->isSuccessful()); check($resp); // this would fail without the cast if the conversion was explicit ?> ------------------------------------------------------------------------ [2012-09-04 14:18:13] qfox at ya dot ru WHEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEN?!! There was 3 years to patch sources! ------------------------------------------------------------------------ [2011-01-20 22:54:12] neoegm at hotmail dot com This would be very useful in order to be able to define a specific evaluation method for an object as a boolean, to, for example, simplify if-switches, so you can just do: if ($obj) { //... } Here an example of a class which toggles its own value each time it's evaluated as a boolean: class ToggleObj { var $val = FALSE; function __toBool() { $ret = $this->val; $this->val = !$ret; return $ret; } } $obj = new ToggleObj; if ($obj) { //Does not enter } if ($obj) { //Now it does } Or going further, to make even table rows highlighted: foreach ($rows as $row) { ?> <tr class="<?=$obj?"":"highlighted"?>"> <td><?=$row?></td> </tr> <?php } Thanks. NeoEGM http://www.neoegm.com/ ------------------------------------------------------------------------ [2009-03-28 12:41:30] andrea at 3site dot it I wonder why you guys do not implement in core the PECL php_operator which would make code style and life much easier. I cannot imagine a Number class which needs (int)$obj for every single operation. Please do not get me wrong, __cast is a good idea, but it covers only explicit cases while every other decent language (C#, Java, Python) allows developer to implement implic cast behavior as well. This, in PHP 5.3, would be excellent (but probaly an illusion thou). Regards ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=46128 -- Edit this bug report at https://bugs.php.net/bug.php?id=46128&edit=1