deadimp Posted February 17, 2008 Share Posted February 17, 2008 Is using the -> operator on an expression (not a variable) always illegal? Or am I doing something wrong? Ex. class Test { var $var, $extra; function __construct($var) { $this->var=$var; } //Allow variables to be set right off of a class, returning this for chaining - like jQuery or whatever else there is function extend($extra) { $this->extra=$extra; return $this; } } $bleat=(new Test("biscuit"))->extend("super-something"); Throws: "syntax error, unexpected T_OBJECT_OPERATOR" I know you can do this in C++ and Java, due to their 'type parametric' nature, and I assumed it would work with PHP. Info: PHP 5.2.5, XAMPP, WinXP I guess I'm gradually growing more disappointed in some of PHP's non-flexible syntax. I'm not sure whether it's just a design flaw, or a design scheme meant to force 'cleaner' code. EDIT: One ugly workaround: function& w(&$x) { return $x; } $bleat=w(new Test("biscuit"))->extend("super-something"); NOTE: There's no point to this impelmentation. It's meant for demonstrating. Quote Link to comment Share on other sites More sharing options...
Daniel0 Posted February 17, 2008 Share Posted February 17, 2008 If you wish to do that then you'll have to create a method which gets a new instance. <?php class Test { public function __construct($argA) { // do stuff } public static function getNewInstance($argA) { return new self($argA); } public function someSortOfFunction() { echo 'Called ' . __METHOD__; return $this; } } $obj = Test::getNewInstance('testing')->someSortOfFunction(); ?> Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.