為什麼laravel中,return "xxx";會直接回傳xxx並且輸出到目前頁面上。而php中的 return "xxxx" 並不會輸出在頁面上任何東西。他們是同一個方法嗎,到底怎麼在laravel使用不用輸出到頁面上內容的php 原始 return 方法。
在Laravel中,並不是因為你return才輸出頁面,return的東西還需要經過Response,再通过它的send方法送出去。
Response
send
composer intasll 能下載半網路
看了下Laravel原始碼,答案就在SymfonyComponentHttpFoundationResponse這個類別裡面
入口檔案呼叫了一個$response->send()方法
public function send() { $this->sendHeaders(); $this->sendContent(); if (function_exists('fastcgi_finish_request')) { fastcgi_finish_request(); } elseif ('cli' !== PHP_SAPI) { static::closeOutputBuffers(0, true); } return $this; }
然後再看sendContent()方法
public function sendContent() { echo $this->content; return $this; }
這裡看到還是使用的echo
在Laravel中,並不是因為你return才輸出頁面,return的東西還需要經過
Response
,再通过它的send
方法送出去。
composer intasll 能下載半網路
看了下Laravel原始碼,答案就在SymfonyComponentHttpFoundationResponse這個類別裡面
入口檔案呼叫了一個$response->send()方法
然後再看sendContent()方法
這裡看到還是使用的echo