Skip to content

Laravel 快速入门

安装

通过 Laravel 安装器

首先,使用 Composer 下载 Laravel 安装器。

php
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:

php
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
php artisan serve

默认情况下,HTTP 服务器将监听 8000 端口。然而,如果该端口已被占用或你希望以这种方式服务多个应用程序,你可能想要指定要使用的端口。只需添加 --port 参数:

php
php artisan serve --port=8080

目录结构

安装框架后,浏览一下项目以熟悉目录结构。app 目录包含 viewscontrollersmodels 等文件夹。你应用程序的大部分代码将位于此目录中的某个地方。你可能还想探索 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 文件,并在文件底部添加以下路由:

php
Route::get('users', function()
{
	return 'Users!';
});

现在,如果你在 Web 浏览器中访问 /users 路由,你应该会看到 Users! 作为响应。太好了!你刚刚创建了你的第一个路由。

路由也可以附加到控制器类。例如:

php
Route::get('users', 'UserController@getIndex');

此路由通知框架,针对 /users 路由的请求应调用 UserController 类的 getIndex 方法。有关控制器路由的更多信息,请查看 控制器文档

创建视图

接下来,我们将创建一个简单的视图来显示我们的用户数据。视图位于 app/views 目录中,并包含你应用程序的 HTML。我们将在此目录中放置两个新视图:layout.blade.phpusers.blade.php。首先,让我们创建我们的 layout.blade.php 文件:

php
<html>
	<body>
		<h1>Laravel 快速入门</h1>

		@yield('content')
	</body>
</html>

接下来,我们将创建我们的 users.blade.php 视图:

php
@extends('layout')

@section('content')
	Users!
@stop

这些语法可能看起来很奇怪。这是因为我们正在使用 Laravel 的模板系统:Blade。Blade 非常快速,因为它只是对你的模板运行的一小部分常规表达式,以将其编译为纯 PHP。Blade 提供了强大的功能,如模板继承,以及对典型 PHP 控制结构(如 iffor)的一些语法糖。有关更多详细信息,请查看 Blade 文档

现在我们有了视图,让我们从 /users 路由返回它。不要再从路由返回 Users!,而是返回视图:

php
Route::get('users', function()
{
	return View::make('users');
});

太好了!现在你已经设置了一个简单的视图,扩展了一个布局。接下来,让我们开始处理我们的数据库层。

创建迁移

要创建一个表来保存我们的数据,我们将使用 Laravel 迁移系统。迁移让你可以清晰地定义对数据库的修改,并轻松与团队共享。

首先,让我们配置一个数据库连接。你可以从 app/config/database.php 文件配置所有数据库连接。默认情况下,Laravel 配置为使用 MySQL,你需要在数据库配置文件中提供连接凭据。如果你愿意,可以将 driver 选项更改为 sqlite,它将使用 app/database 目录中包含的 SQLite 数据库。

接下来,要创建迁移,我们将使用 Artisan CLI。从项目的根目录中,在终端中运行以下命令:

php
php artisan migrate:make create_users_table

接下来,在 app/database/migrations 文件夹中找到生成的迁移文件。此文件包含一个具有两个方法的类:updown。在 up 方法中,你应该对数据库表进行所需的更改,而在 down 方法中,你只需撤消这些更改。

让我们定义一个看起来像这样的迁移:

php
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
php artisan migrate

如果你希望回滚迁移,可以发出 migrate:rollback 命令。现在我们有了一个数据库表,让我们开始提取一些数据!

Eloquent ORM

Laravel 附带了一个出色的 ORM:Eloquent。如果你使用过 Ruby on Rails 框架,你会发现 Eloquent 很熟悉,因为它遵循 ActiveRecord ORM 风格的数据库交互。

首先,让我们定义一个模型。Eloquent 模型可以用来查询相关的数据库表,以及表示该表中的给定行。别担心,这一切很快就会明白!模型通常存储在 app/models 目录中。让我们在该目录中定义一个 User.php 模型,如下所示:

php
class User extends Eloquent {}

请注意,我们不必告诉 Eloquent 使用哪个表。Eloquent 有多种约定,其中之一是使用模型名称的复数形式作为模型的数据库表。方便!

使用你喜欢的数据库管理工具,在 users 表中插入几行数据,我们将使用 Eloquent 检索它们并将其传递给我们的视图。

现在让我们将 /users 路由修改为如下所示:

php
Route::get('users', function()
{
	$users = User::all();

	return View::make('users')->with('users', $users);
});

让我们逐步分析这个路由。首先,all 方法在 User 模型上将检索 users 表中的所有行。接下来,我们通过 with 方法将这些记录传递给视图。with 方法接受一个键和值,并用于使一段数据可用于视图。

太棒了。现在我们准备在视图中显示用户了!

显示数据

现在我们已经将 users 传递给我们的视图,我们可以这样显示它们:

php
@extends('layout')

@section('content')
	@foreach($users as $user)
		<p>{{ $user->name }}</p>
	@endforeach
@stop

你可能在想我们的 echo 语句在哪里。当使用 Blade 时,你可以通过将数据包围在双大括号中来回显数据。这很简单。现在,你应该能够访问 /users 路由,并在响应中看到用户的名称。

这只是个开始。在本教程中,你已经看到了 Laravel 的基本知识,但还有许多更令人兴奋的东西可以学习。继续阅读文档,深入了解 EloquentBlade 中可用的强大功能。或者,也许你更感兴趣的是 队列单元测试。再或者,你可能想通过 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 网站