Edit report at https://bugs.php.net/bug.php?id=63268&edit=1
ID: 63268 Comment by: klaussantana at gmail dot com Reported by: klaussantana at gmail dot com Summary: Scalar Casting Status: Open Type: Feature/Change Request Package: Unknown/Other Function Operating System: Any PHP Version: Irrelevant Block user comment: N Private report: N New Comment: And then something like this: register_casting_behavior( 'object', 'string', '::__toString' ); register_casting_behavior( 'object', 'int', '::__toInt' ); $S = new String('Teste'); echo $S; // will call __toString() method within $S and return the value... echo $S +1; // will call __toInt() method within $S and return the value... Callbacks would work somehow like this: * When you specify an array with 1st parameter as a class name string and 2nd as constructor it will instantiate the object. Else it will invoke the static method. * When you specify an array with 1st parameter as an object and 2nd as any method it will invoke that method within that object * If the origin type is "object" and the callback is a string that starts with "::" it will call the remaining callback string as a method in the object being casted as the destination type. Previous Comments: ------------------------------------------------------------------------ [2012-10-12 21:20:23] klaussantana at gmail dot com Note that it'll be automatically chainable because the result of ->toLower() is a string and it will cast as an object... And you'll can also do something like this: echo 'My String'->toLower(); Just suggestions.. comment. ------------------------------------------------------------------------ [2012-10-12 21:16:36] klaussantana at gmail dot com Description: ------------ It would be nice if we can control the casting behavior of any type to another. Like a function like this: register_casting_behavior( $from, $to, $callback_function ); So when you do this: register_casting_behavior( 'int', 'bool', 'int2bool' ); $X = (bool) 1; It will call int2bool( 1 ) and so... Then.... Test script: --------------- register_casting_behavior( 'string', 'object', array( 'String', '__construct' ) ); class String { protected $value = null; public function __construct( $String ) { $this->value = $String; return $this; } public function toLower() { return strtolower($this->value); } public function underline() { return "<span style='text-decoration: underline;'>{$this->value}</span>"; } } $S = 'My String'; echo $S->toLower()->underline(); // will output: <span style='text-decoration: underline;'>my string</span> ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=63268&edit=1