Req #53378 [Opn->Dup]: ( new Class() ) -> method() throws a PHP parse error
| From: | aharvey@php.net | Date: | Tue, 23 Nov 2010 09:32:56 +0000 |
| Subject: | Req #53378 [Opn->Dup]: ( new Class() ) -> method() throws a PHP parse error | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-156303@lists.php.net to get a copy of this message | ||
Edit report at http://bugs.php.net/bug.php?id=53378&edit=1
ID: 53378
Updated by: aharvey@php.net
Reported by: marco dot weber at uni-trier dot de
Summary: ( new Class() ) -> method() throws a PHP parse error
-Status: Open
+Status: Duplicate
Type: Feature/Change Request
Package: Scripting Engine problem
Operating System: ANY
PHP Version: 5.3.3
Block user comment: N
Private report: N
New Comment:
Duplicate of numerous other requests, the oldest I can find being
request #34502. Patches welcome, I suspect.
Previous Comments:
------------------------------------------------------------------------
[2010-11-22 13:41:14] marco dot weber at uni-trier dot de
Description:
------------
In Java or C# it is allowed to do ( new Class() ) -> method() calls, why
not in PHP?
This is very useful for more complex commands, f.e.:
$collection = new QueryableCollection($employees);
$collection->setAsName('c1');
$collection->where(new OrCondition(
new ColumnEquals( ( new Column('c1.job') )
->subString(0, 5)->toLower(), 'admin'),
new AndCondition(
new ColumnBiggerThan('c1.age', 10),
new ColumnLowerThan('c1.age', 20),
)
))
->sortByDesc( ( new Column('c1.job') ) ->toLower())
->sortByAsc('c1.nachname')
->sortByAsc('c1.vorname')
->select('c1.*');
Test script:
---------------
<?php
class MyString {
protected $string='';
public function __construct($string) {
if(is_string($string)) $this->string=$string;
}
public function length() {
return strlen($this->string);
}
}
echo("This string has a length of: " . (new
MyString('teststring'))->length() ."\n");
/* instead you have to do it like that :(
$ms=new MyString('teststring');
echo("This string has a length of: " . $ms->length() ."\n");
*/
?>
Expected result:
----------------
PHP Parse error: syntax error, unexpected T_OBJECT_OPERATOR in ...
Actual result:
--------------
No Syntax error. PHP should just create the object and execute its
Method.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/bug.php?id=53378&edit=1