首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

Laravel 5 向視圖傳遞數據的三種方式對比

     編輯:PHP 綜合知識

場景

控制器需向視圖傳遞多個變量,Laravel 提供多種語法糖,本文對比三種常用方式。

方式一:鏈式 with() 陣列

public function about() {
    return view('pages.about')->with([
        'first' => 'Zhang',
        'last'  => 'Jinglin',
    ]);
}

方式二:構建陣列變量

public function about() {
    $data = [];
    $data['first'] = 'Zhang';
    $data['last']  = 'Jinglin';
    return view('pages.about', $data);
}

方式三:compact() 函數(推薦)

public function about() {
    $first = 'Zhang';
    $last  = 'Jinglin';
    return view('pages.about', compact('first', 'last'));
}

對比總結

方式優點缺點適用場景
with(陣列)鏈式調用、可讀性好鍵值重複寫變量名少量變量、鏈式風格
陣列變量靈活、可動態構建代碼較冗長動態鍵名、條件性賦值
compact()最簡潔、變量名即鍵名變量必須預先定義固定變量集、日常開發首選

底層原理

  • view() 返回 Illuminate\View\View 實例。
  • with() 內部調用 $this->data = array_merge($this->data, $data)。
  • compact() 是 PHP 內置函數:['first' => $first, 'last' => $last]。

進階:視圖共享數據

// ServiceProvider boot()
View::share('site_name', 'My Blog'); // 所有視圖可用 $site_name

// 或佈局文件直接使用
<title>{{ config('app.name') }}</title>

總結

日常開發 推薦 compact(),代碼最乾淨;需動態構建鍵值對時用陣列;鏈式風格偏好者用 with()。三者最終效果一致,視圖中均以 $first/$last 直接訪問。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved