2015-01-30 5 views
2

Возможно ли узнать, вызван ли вызов метода из цепочки методов?
Для меня, например, сильфон class:Проверьте, является ли вызов методом цепочки

class Test{ 
    protected $string = '123'; 

    public function a($string){ 
     $this->string .= $string; 

     if(method chain){ 
      return $this; 
     }else{ 
      return $this->string; 
     } 
    } 

    public function b($string){ 
     $this->string .= $string; 

     if(method chain){ 
      return $this; 
     }else{ 
      return $this->string; 
     } 
    } 
} 

Результат:

$test = new Test(); 
echo $test->a('000'); // 123000 
echo $test->a('000')->b('www'); // 123000www 

UPDATE
Я кончался создание exec() метод, чтобы сказать нет больше методов не собирались назвать.

public function exec(){ 
    return $this->string; 
} 

ответ

2

Это невозможно, потому что вы не знаете о контексте, что результат метода будет использоваться.

Вместо этого, вы всегда можете вернуться $this просто использовать __toString метод Ретур ваш $string:

class Test{ 
    protected $string = '123'; 

    public function a($string){ 
     $this->string .= $string; 
     return $this; 
    } 

    public function b($string){ 
     $this->string .= $string; 
     return $this; 
    } 

    public function __toString() { 
     return $this->string; 
    } 
} 

Тогда, если вы повторить ваше значение - он будет использовать его в виде строки, в противном случае вы» Работать над объектом.

Смежные вопросы