$cookie = Cookie::make('name', 'value');
return Response::make($content)->withCookie($cookie);
Тот, кто получит Response, сам отправит данные в браузер. Попробуйте их схему применить в случае, если make($content) непосредственно отправляет контент в браузер - не получится.
Потому что вы данные отправите в браузер, а заголовок уже не сможете, так как перед этим отправлены данные.
Это все называется fluent interface или текучий интерфейс.
Но он был придуман не для того, чтобы выполнять методы в произвольном порядке, а для того, что бы писать более компактный и читаемый код.
Но я вот еще что придумал, пример (могут быть ошибки, не запускал)
class SomeFreakyEntity {
var param1, param2;
public function terminalMethod(){
// Этот метод всегда выполняет некое действие с настроенным объектом, конец текучего интерфейса
var_dump($this);
}
public function withSomeParams1($value){
$this->param1 = $value;
return $this;
}
public function withSomeParams2($value){
$this->param2 = $value;
return $this;
}
// Ловим любой вызов необъявленного статического метода
public static function __callStatic($method, $arguments){
$o = new __CLASS__;
return call_user_func_array(array($o, $method), $arguments)
}
}
Теперь можно писать как-то так:
SomeFreakyEntity::terminalMethod();
SomeFreakyEntity::withSomeParams1('blabla')->terminalMethod();
SomeFreakyEntity::withSomeParams2('blabla')->terminalMethod();
SomeFreakyEntity::withSomeParams2('blabla')->withSomeParams1('blabla')->terminalMethod();
SomeFreakyEntity::withSomeParams1('blabla')->withSomeParams2('blabla')->terminalMethod();
А в вашем случае
Template::withData($dataArray)->render('templateName')