Laravel 快速入門
安裝
透過 Laravel 安裝器
首先,使用 Composer
全局下載並安裝 Laravel/installer
:
composer global require "laravel/installer=~1.1"
請確定把 ~/.composer/vendor/bin
路徑放置於您的 PATH
裡,這樣 laravel
可執行文件才能被命令行找到,以後您就可以在命令行下直接使用 laravel
命令。
安裝並且配置成功後,可以使用命令 laravel new
在您指定的目錄下創建一份全新安裝的 Laravel 應用
,如這樣的調用:laravel new blog
將會在當前目錄下創建一個叫 blog
的目錄,此目錄裡面存放着全新安裝的 Laravel 應用,此方法跟其他方法不一樣的地方在於是提前安裝好所有代碼依賴的,您無需再通過 composer install
安裝,速度一下子提高了很多。
透過 Composer
Laravel 框架使用 composer 來執行安裝及相依性管理。如果還沒有安裝它的話,請先從 安裝 Composer 開始吧。
安裝之後,你可以透過命令列模式執行下列指令來安裝 Laravel:
composer create-project laravel/laravel your-project-name --prefer-dist
這個指令會下載並安裝一份乾淨的 Laravel 在你目前所在目錄的 your-project-name
的新建目錄中。
如果你想要直接從 Github 上的 Laravel Respoitory 手動下載 Laravel 也是可以的。只要在解壓後的目錄最頂層,執行 composer install
即可,這個指令會把框架相依的資源下載安裝好。
權限設定
在安裝 Laravel 之後,你需要讓網頁伺服器有寫入 app/storage
目錄的權限。詳情請見 安裝過程 文件說明。
運行 Laravel
一般而言,你需要網頁伺服器(如: Apache 或是 Nginx)來運行你的 Laravel 應用。如果你是使用 PHP 5.4 以上版本,那可以使用 PHP 內建的開發伺服器,你只需要使用 Artisan 命令 serve
:
php artisan serve
目錄結構
安裝完框架後,可以來了解熟悉一下專案的目錄結構。app
目錄裡面包含了 views(視圖)
、controllers(控制器)
還有 models(模型)
等目錄。你的應用程式大多數的程式碼都會在這個目錄中。你也會發現 app/config
這個目錄,設定檔多存在在這目錄之中。
本地開發環境
過去你要在本機上設定本地的 PHP 開發環境是讓人頭痛的事情。要安裝正確的 PHP 版本、必須的套件,還有所需的元件是廢時耗力的。為了解決這狀況,使用 Laravel Homestead 吧。Homestead 是以 Laravel 和 Vagrant 所設計的虛擬機器。而 Homestead Vagrant 封裝預載建立完整 PHP 應用所需的所有軟體。如此一來你可以在瞬間創建一個虛擬化、獨立不受干擾的開發環境。下面列出包裝在 Homestead 裏的軟體:
- Nginx
- PHP 5.5
- MySQL
- Redis
- Memcached
- Beanstalk
不用擔心,即使「虛擬化」聽起來複雜,但這是無痛的。VirtualBox 和 Vagrant 是 Homestead 的相依軟體,你需要先安裝他們。兩個軟體都有各平台的簡單圖形化安裝介面。請參閱 Homestead 文件 進行了解。
路由
一開始,我們先創建第一個路由。在 Laravel 中,最簡單的路由是封閉性路由。打開 app/routes.php
檔案,並且增加下面的路由在檔案的最下方:
Route::get('users', function()
{
return 'Users!';
});
現在,你在你瀏覽器中輸入 /users
,你應該會看到頁面出現 Users!
。很好!你已經建立了你的第一個路由。
路由也可以指向一個控制器類別。例如:
Route::get('users', 'UserController@getIndex');
這個路由告訴框架 /users
路由的請求應該使用 UserController
類別的 getIndex
方法。查看更多控制器路由的資訊,請查閱 控制器文件。
建立視圖
接下來,我們要創建試圖來顯示我們的用戶資料。視圖以 HTML 代碼存放在 app/views
的目錄中。我們來存放兩個視圖進目錄中: layout.blade.php
和 user.blade.php
。首先,我們先來建立 layout.blade.php
檔案:
<html>
<body>
<h1>Laravel Quickstart</h1>
@yield('content')
</body>
</html>
接下來,我們建立 users.blade.php
視圖:
@extends('layout')
@section('content')
Users!
@stop
這裡有些語法或許讓你感到陌生。因為我們使用的是 Laravel 的模板系統:Blade。Blade 非常快,僅需要少量的正規表示式來幫你的模板編譯成 PHP 代碼。Blade 提供了強大的功能,例如模板的繼承,還有一些常用的 PHP 控制結構語法,如 if
和 for
。更多資訊請查閱 Blade 文件。
現在,我們已經有了自己的視圖,讓我們回到 /users
路由。我們改用視圖來替代顯示出 Users!
:
Route::get('users', function()
{
return View::make('users');
});
太棒了!現在你已經成功地建立了一個繼承自 layout 的簡單視圖。接下來,我們開始到資料庫層。
建立遷移檔
我們使用 Laravel 的遷移(migration)系統來建立資料表以保存我們的資料。遷移記錄著資料庫的改變歷程,這讓團隊成員間的資訊分享更為簡單。
首先,我們要設定資料庫連接。你可以在 app/config/database.php
檔案配置所有的資料庫連接資訊。預設中,Laravel 使用 MySQL,所以你必須將資料庫連接的機密資訊填入其中。你也可以更改 driver
選項為 sqlite
,如此他就會使用放置在 app/database
裡的 SQLite 資料庫。
接下來,我們來創建遷移檔,我們使用 Artisan CLI。在專案的根目錄下,在終端裡執行下列指令:
php artisan migrate:make create_users_table
然後,在 app/database/migrations
目錄下找到產生的遷移檔。檔案中有一個包含了兩個方法 up
和 down
的類別。在 up
方法中,你必須表明你要對你的資料表做哪些更動,而在 down
的方法裡,你只要回復這些更動。
我們定義一個遷移檔如下:
public function up()
{
Schema::create('users', function($table)
{
$table->increments('id');
$table->string('email')->unique();
$table->string('name');
$table->timestamps();
});
}
public function down()
{
Schema::drop('users');
}
然後我們從終端裡透過 migrate
指令來執行遷移動作。在專案的根目錄裡執行下列指令:
php artisan migrate
如果你想回復遷移,你可以執行 migrate:rollback
指令。現在我們已經建好了資料表了,開始放些資料進去吧。
Eloquent ORM
Laravel 提供了很棒的 ORM:Eloquent。如果你曾經使用過 Ruby on Rails 框架,那你將會覺得 Eloquent 很熟悉,因為它遵循 ActiveRecord ORM 風格的資料庫互動模式。
首先,我們先來定義一個模型(model)。一個 Eloquent 模型可以用來查詢關聯的資料表,以及表內的某一行。別擔心,我們很快就會了解了。模型通常存放在 app/models
目錄中。讓我們先來在這目錄裡定義一個 User.php
的模型檔如下:
class User extends Eloquent {}
注意,我們並未告訴 Eloquent 使用哪個表。Eloquent 有多種慣例,一種就是使用模型的複數形態作為該模型的資料表名稱,非常方便。
使用你喜歡的資料庫管理工具,插入幾筆資料到 users
資料表,我們將使用 Eloquent 來取得這些資料並且傳遞到視圖當中。
現在我們修改我們的 /users
路由,如下:
Route::get('users', function()
{
$users = User::all();
return View::make('users')->with('users', $users);
});
我們來看看這個路由。首先,User
模型裡的 all
方法會將 users
表裡取得所有的記錄。接下來,我們透過 with
方法將這些記錄傳遞到視圖裡。with
方法接受一個鍵和一個值,如此該鍵值就可以在視圖中被使用了。
顯示資料
現在,我們視圖中已經可以存取到 users
類別了,我們可以顯示出來,如下:
@extends('layout')
@section('content')
@foreach($users as $user)
<p>{{ $user->name }}</p>
@endforeach
@stop
你會發現沒有看到任何 echo
語句。當使用 Blade 時,你可以使用兩個大括號來輸出資料。很容易的,你應該可以透過 /users
路由來看到你的用戶資料。
這僅僅只是開始。在本系列教學中,你已經了解了 Laravel 基礎部分,但是還有更多令人興奮的東西等著你學習。繼續閱讀文件且更深入的了解 Eloquent 和 Blade 的強大特性。或許,你也更有興趣去了解 隊列 和 單元測試。也或許,你更想要了解 IoC Container 來展現實力,選擇在你。
部署應用程式
Laravel 的其中一個目標就是讓 PHP 應用程式開發從下載到部署都輕鬆化,而 Laravel Forge 提供了一個簡單的方式去部署你的 Laravel 應用到快速的服務器上。Forge 可以設定並供應在 DigitalOcean、 Linode、Rackspace 和 Amazon EC2 上的機器群。如同 Homestead 一樣,所有必須的最新版軟體都已安裝在內:Nginx、PHP 5.5、MySQL、Postgres、Redis、Memcached 等等。Forge 的「快速部署」可以讓你在每次發布更新至 Github 或是 Bitbucket 時自動部署應用。
更重要的是,Forge 能幫助你設定 queue workers、SSL、Cron jobs、子網域等等。更多的資訊請參閱 Forge 網站。