Laravel 快速入门
安装
通过 Laravel 安装器
首先,使用 Composer 下载 Laravel 安装器。
composer global require "laravel/installer=~1.1"
确保将 ~/.composer/vendor/bin
目录放入你的 PATH 中(如果在 Windows 上工作,则为 C:\%HOMEPATH%\AppData\Roaming\Composer\vendor\bin
),以便在终端中运行 laravel
命令时找到 laravel
可执行文件。
安装完成后,简单的 laravel new
命令将创建一个新的 Laravel 安装在你指定的目录中。例如,laravel new blog
将创建一个名为 blog
的目录,里面包含一个全新的 Laravel 安装及所有依赖项。此安装方法比通过 Composer 安装要快得多。
通过 Composer
Laravel 框架利用 Composer 进行安装和依赖管理。如果你还没有安装,请先 安装 Composer。
现在你可以通过在终端中发出以下命令来安装 Laravel:
composer create-project laravel/laravel your-project-name 4.2.*
此命令将在你当前目录下的新 your-project-name
文件夹中下载并安装一个全新的 Laravel 副本。
如果你愿意,也可以手动从 GitHub 下载 Laravel 仓库的副本。接下来,在你手动创建的项目目录的根目录中运行 composer install
命令。此命令将下载并安装框架的依赖项。
权限
安装 Laravel 后,你可能需要授予 Web 服务器对 app/storage
目录的写权限。有关配置的更多详细信息,请参见 安装 文档。
服务 Laravel
通常,你可以使用像 Apache 或 Nginx 这样的 Web 服务器来服务你的 Laravel 应用程序。如果你使用的是 PHP 5.4+ 并希望使用 PHP 的内置开发服务器,可以使用 serve
Artisan 命令:
php artisan serve
默认情况下,HTTP 服务器将监听 8000 端口。然而,如果该端口已被占用或你希望以这种方式服务多个应用程序,你可能想要指定要使用的端口。只需添加 --port 参数:
php artisan serve --port=8080
目录结构
安装框架后,浏览一下项目以熟悉目录结构。app
目录包含 views
、controllers
和 models
等文件夹。你应用程序的大部分代码将位于此目录中的某个地方。你可能还想探索 app/config
目录及其可用的配置选项。
本地开发环境
过去,在你的机器上配置本地 PHP 开发环境是一件麻烦事。安装正确版本的 PHP、所需的扩展和其他必要组件既耗时又令人困惑。相反,考虑使用 Laravel Homestead。Homestead 是一个为 Laravel 和 Vagrant 设计的简单虚拟机。由于 Homestead Vagrant box 已预打包了构建强大 PHP 应用程序所需的所有软件,因此你可以在几秒钟内创建一个虚拟化的、隔离的开发环境。以下是 Homestead 中包含的一些好东西:
- Nginx
- PHP 5.6
- MySQL
- Redis
- Memcached
- Beanstalk
别担心,尽管“虚拟化”听起来复杂,但其实很简单。VirtualBox 和 Vagrant,作为 Homestead 的两个依赖项,都包含适用于所有流行操作系统的简单图形安装程序。查看 Homestead 文档 开始使用。
路由
要开始,让我们创建我们的第一个路由。在 Laravel 中,最简单的路由是指向一个闭包的路由。打开 app/routes.php
文件,并在文件底部添加以下路由:
Route::get('users', function()
{
return 'Users!';
});
现在,如果你在 Web 浏览器中访问 /users
路由,你应该会看到 Users!
作为响应。太好了!你刚刚创建了你的第一个路由。
路由也可以附加到控制器类。例如:
Route::get('users', 'UserController@getIndex');
此路由通知框架,针对 /users
路由的请求应调用 UserController
类的 getIndex
方法。有关控制器路由的更多信息,请查看 控制器文档。
创建视图
接下来,我们将创建一个简单的视图来显示我们的用户数据。视图位于 app/views
目录中,并包含你应用程序的 HTML。我们将在此目录中放置两个新视图:layout.blade.php
和 users.blade.php
。首先,让我们创建我们的 layout.blade.php
文件:
<html>
<body>
<h1>Laravel 快速入门</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');
});
太好了!现在你已经设置了一个简单的视图,扩展了一个布局。接下来,让我们开始处理我们的数据库层。
创建迁移
要创建一个表来保存我们的数据,我们将使用 Laravel 迁移系统。迁移让你可以清晰地定义对数据库的修改,并轻松与团队共享。
首先,让我们配置一个数据库连接。你可以从 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 风格的数据库交互。
首先,让我们定义一个模型。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);
});
让我们逐步分析这个路由。首先,all
方法在 User
模型上将检索 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 容器 展示你的架构能力。选择权在你手中!
部署应用程序
Laravel 的目标之一是使 PHP 应用程序开发从下载到部署都变得愉快,而 Laravel Forge 提供了一种简单的方法,将你的 Laravel 应用程序部署到快速的服务器上。Forge 可以在 DigitalOcean、Linode、Rackspace 和 Amazon EC2 上配置和提供服务器。与 Homestead 一样,所有最新的好东西都包括在内:Nginx、PHP 5.6、MySQL、Postgres、Redis、Memcached 等等。Forge 的“快速部署”甚至可以在你每次将更改推送到 GitHub 或 Bitbucket 时为你部署代码!
此外,Forge 还可以帮助你配置队列工作者、SSL、Cron 作业、子域等。有关更多信息,请访问 Forge 网站。