ID: 46128
Comment by: rayro at gmx dot de
Reported By: 131 dot php at cloudyks dot org
Status: Open
Bug Type: Feature/Change Request
Operating System: Linux
PHP Version: 5.2.6
New Comment:
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
Previous Comments:
------------------------------------------------------------------------
[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
------------------------------------------------------------------------
[2008-10-06 04:15:03] mark at hell dot ne dot jp
Backported to PHP 5.2.6 :
http://ookoo.org/svn/snip/php-5.2.6_class_cast_func.patch
------------------------------------------------------------------------
[2008-10-05 16:33:07] 131 dot php at cloudyks dot org
This is awesome
------------------------------------------------------------------------
[2008-10-05 08:49:55] mark at hell dot ne dot jp
Did a test implementation only supporting a few types (int, float,
bool, string).
This works as expected.
Test code:
----------
class test {
public function __cast($type) {
switch($type) {
case 'string': return 'a string';
case 'bool': return true;
case 'float': return 123.456;
case 'int': return 978;
default:
var_dump($type);
return null;
}
}
}
$t = new test();
var_dump((string)$t);
var_dump((int)$t);
var_dump((float)$t);
var_dump((bool)$t);
Result:
string(8) "a string"
int(978)
float(123.456)
bool(true)
Here's the patch file for this simple implementation against PHP
5.3.0alpha2.
http://ookoo.org/svn/snip/php-5.3.0alpha2_class_cast_func.patch
------------------------------------------------------------------------
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
http://bugs.php.net/46128--
Edit this bug report at http://bugs.php.net/?id=46128&edit=1