Edit report at https://bugs.php.net/bug.php?id=46128&edit=1
ID: 46128 Comment by: qfox at ya dot ru 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: WHEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEN?!! There was 3 years to patch sources! Previous Comments: ------------------------------------------------------------------------ [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 ------------------------------------------------------------------------ [2009-02-06 00:11:19] rayro at gmx dot de This is such a nice Implementation and very useful, but i prefer to add the methods __toBool, __toInt and __toArray rather than __cast, stay tuned with PHP's other magic methods.. I dont agree fully with that post in feature request #38508 from helly. If that'll be the way, why did the decision for magic methods? Isnt that all complex although? ^^ We know, but in my eyes (and many others), i think that these magically stuff is one of the top key features for php. And none of these features will become critism i think. If not needed, just dont use them! The additional goody __toInvoke() introduced in 5_3 is a such nice addition for developing "quick gets" based on nested object sets: <?php $magazine(3)->getArticles(); // old way $magazine->getArticle($magazine->useMagazine(3)); ?> This helper is a "backdoor" like way to enable PHP to fully write nested Objects like in Javascript. And my opinion for that: I LIKE THIS :) I think this is a very very discussable topic to the changes for 5_3 or 6_0 beside the wanted support for traditional type hinting and utf8! thanks ------------------------------------------------------------------------ [2008-11-23 09:01:02] mark at hell dot ne dot jp Please test the following extension : http://ookoo.org/svn/snip/phpcastable/ This extension adds a "Castable" interface. Any class implementing this interface have to implement a __cast() function. This function will be called when the object needs to be casted to a type. This extension is EXPERIMENTAL and needs more testing/review before being used in any production system. ------------------------------------------------------------------------ [2008-10-27 17:08:24] info at netmosfera dot it AWESOME! php developers, please, we need it!! http://bugs.php.net/bug.php?id=46404 ------------------------------------------------------------------------ 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