2013-10-02 67 views
0

在PHP 5.3,你可以這樣做:

$baz::waldo(); 

你能做到的

$foo->bar::garply(); //generates an error 
{$foo->bar}::garply(); //this too 

相當於而不訴諸

$baz = $foo->bar; 
$baz::garply(); // while this works 
+8

爲什麼你不試試看看? –

+0

我認爲OP試過了,並得到一個錯誤。所以現在他想知道如何用一個(直接deref)替換兩行(中間賦值)。 –

+1

@AlmaDoMundo可能,但問題並不清楚。 – ajp15243

回答

1
知道

最好的辦法是進行測試:Test demo

給這些類:

class Foo 
{ 
    public static function hello() 
    { 
     echo "Hello !"; 
    } 
} 
class Bar 
{ 
    public $apple = null; 

    public function __construct() 
    { 
     $this->apple = new Foo(); 
    } 
} 

這隻會從PHP 7.0.0工作:

$foo = new Bar(); 
$foo->apple::hello(); 

你會得到這樣的錯誤,與以前的版本:

Parse error: syntax error, unexpected '::'

但這:

$foo = new Bar(); 
$baz = $foo->apple; 
$baz::hello(); 

將從PHP 5.3.0開始工作:Test demo