logo资料库

Laravel 学习笔记.pdf

第1页 / 共37页
第2页 / 共37页
第3页 / 共37页
第4页 / 共37页
第5页 / 共37页
第6页 / 共37页
第7页 / 共37页
第8页 / 共37页
资料共37页,剩余部分请下载后查看
翻译整理: leolovenet@gmail.com Blog: http://leolovenet.com 官方文档: http://laravel.com/docs/quick 前言: 整理翻译这个文档,实属一个意外,一开始要做一个小项目,就看了一天的文档, 但是, 到后来发现那个小项目实在是太小了, 使用这么大的框架有点大材小用,有加上自己对框架 也不太熟悉, 最终是没有使用 Laravel 的. 不过这激起了我学习这个框架的兴趣. 最终产生 了本文. 本文所有的翻译整理全是为了自我学习, 肯定有翻译不准确, 甚至错白字存在, 实 在抱歉. 以后慢慢修改吧. 本文没有讲解安装步骤,假设你已经安装成功 Laravel 了. 截至目前, Laravel 的最新稳定 版本为 4.1 Artisan Laravel 有一个命令行接口,叫做 Artisan . 它提供了一些在开放网站过程中非常有用的命 令.是通过 Symfony Console component 来驱动的. 可以在项目 Root 目录下运行. 用法: Blade (1) 所有可用的命令: php artisan list (2) 访问每个命令的帮助信息: php artisan help migrate (3) 在特定配置环境下运行: php artisan migrate -- env=local (4) 现实当前 Laravel 版本: php artisan --version Blade(刀锋), 是 Laravel 的模板系统( templating system). Blade 运行很快, 因 为它使用简单的正则表达式把你的模板编译成为纯 PHP, 同时 Blade 又提供了像 模板继承, 以及 php 的 if 和 for 类似的语法结构控制语句. 更多的信息请查看 Blade 的详细文档 Migration 当我们想创建一个数据库表格来存放我们的数据的时候, 可以是用Laravel的 migration (迁移)系统. Laravel 的 migration 系统可以直观的定义对数据库的修 改, 并且很容易跟团队的其他人员共享. 使用 migration 的第一步,需要我们先配置对数据库的连接信息. 框架把所有对数据 库的配置信息都存放在了 app/config/database.php 文件中. 默认行况下 Laravel 是使用 MySQL ,你需要在配置文件中指定好对数据库的连接信息. 如果你 更愿意是用 sqlite 替代 MySQL 的话, 仅需要更改配置文件的 driver 选项为
sqlite ,随后框架将使用包含在 app/database 目录下的 SQLite 数据库作为存 储媒介. 第二步,创建 migration .我们将要使用上面介绍的 Artisan 命令行. 进入终端, 在项 目的根目录下运行下面的命令: php artisan migrate:make create_users_table 这将会在 app/database/migrations 文件夹内生成 migration 文件, 文件中 有一个由两个方法 up 和 down 组成的一个类(类名为 CreateUsersTable). 在 up 方法中,应该包含对数据库表格渴望的改变, 在 down 方法中应该做出相反的动 作. 让我们定义一个像下面的这样的 migration: public function up() { Schema::create('users', function($table) //创建⼀一个 users 表格. { $table->increments('id'); //在 users 表中添加⼀一个⼦子增⻓长的 id 列 $table->string('email')->unique(); //在 users 表中添加⼀一个只能是唯 ⼀一的 email 字符列 $table->string('name'); //在 users 表中添加⼀一个 name 字符列 $table->timestamps(); //在 users 表中添加⼀一个时间戳的列 }); } public function down() { Schema::drop('users'); //删除这个表格 } 一切准备完毕,接下来,我们就可以在终端中使用 migrate 命令来运行我们刚刚设 计好了的 miagration. 在你项目的根目录下面简单的执行下面的命令: php artisan migrate 如果你希望做回滚 migration 的话, 你就需要执行 migrate:rollback 命令. 现 在我们已经有了我们的数据库表格,接下来让我们向里面存放点数据. Eloquent ORM
Laravel拥有一个超级 ORM 系统叫做 Eloquent 首先, 让我们来定义一个模型. 一个 Eloquent 模型一个用来查询与它相连的表格, 也可以用来代表表格里的一行. 一会儿你就会明白了. Models 一般是存储在 app/models 目录下面的. 让我们在这个目录下定义一个 User.php 模型文件,像 这样 class User extends Eloquent {} 注意一下,这里我们并没有告诉 Eloquent 我们要使用那个表格. Eloquent 有各种 自己的约定, 其中之一就是使用模型名字的复数形式作为模型数据库中表格的名字. 这些全是风俗约定而已. 你可以使用你最喜欢的数据库管理工具,在 users 表格中插入几行数据,我们接下来 将使用 Eloquent 来检索他们,并把他们交给视图(View)来展示. 在 app/routes.php 中添加下面的配置: Route::get('users', function() { $users = User::all(); return View::make('users')->with('users', $users); }); User 模型的 all 方法检索出了所有在 users 表格中的行, 然后我们使用 with 方法传递这些记录到视图(view)中. with 方法接受一个键和值,使用他们在 view 中可见. 我们可以在 view 中这样来 展示他们,在 app/view 目录下,创建两个文件, layout.blade.php 和 users.blade.php 接下来我们看一下使用 刀锋(Blade) 的语法定义的视图(View): layout.blade.php文件内容为:

Laravel Quickstart

@yield('content') users.blade.php文件内容为: @extends('layout') @section('content') @foreach($users as $user)

{{ $user-> name }}

@endforeach @stop 你可能会比较惊奇, 怎么没有看见 echo 语句呢? 当使用 Blade 的时候, 你可以使 用 {{ }} 来显示数据. 这个很容易做到. 现在你可以打开你的浏览器观看 http://yoursite.com/user 来观看展示的结果了. Laravel项目目录结构 ├── app // 网站APP 代码目录, 自己的代码主要存放在这个目 录下,主要是 MVC 结构 │ ├── commands │ ├── config // 存放所有laravel有关的配置文件,APP的主配置文件 app.php就在存放在该目录下面.里面定义了 Service Providers │ ├── controllers // C 目录 │ ├── database │ ├── filters.php │ ├── lang │ ├── models // M 目录 │ ├── routes.php // 路由配置文件,Request 请求到来后,由那些文件处 理,在这里定义. │ ├── start // APP 对象启动前的加载文件 │ │ ├── artisan.php │ │ ├── global.php │ │ └── local.php │ ├── storage // 存储缓存,日志,session等文件的目录 │ ├── tests │ └── views // C 目录 ├── artisan // 命令行工具 artisan 的文件 ├── bootstrap // APP 启动前的加载文件 │ ├── autoload.php │ ├── paths.php │ └── 2.步 start.php // 当请求到达后,第二个调用的文件, 创建 Laravel Application Object,并作为控制反转( IoC )的容器 ├── composer.json ├── composer.lock ├── phpunit.xml ├── public // 存放前台的静态文件,为 web 的 ROOT 目录,是 APP 的入口 index.php 的存放目录. │ ├── favicon.ico
│ ├── 1.步 index.php // APP入口文件 │ ├── packages │ └── robots.txt ├── readme.md ├── server.php └── vendor // Laravel Framework 源文件 Request Lifecycle 请求的处理流程, Laravel's bootstrap process 1. 所有到达 APP 的请求,首先全部进入 public/index.php 文件. 从这里开始 Laravel 开始着手处理到来的请求,并返回一个对应的回应. 2. 然后加载 bootstrap/start.php 文件,创建 Application (object) 并进行 detects environment 框架在这个文件中创建 Laravel Application 对象,作为 控制反转的容器. 关于Laravel运行环境 Laravel 可以配置多个运行环境, 例如开发运行环境, 本机运行环境, 实际生 产运行环境(默认值)等等, 在这些运行环境里可以重写默认运行环境配置文件 中的定义. 新的环境配置文件是以新的环境名命名的目录,并存放在 app/config 目录下. 例如 local开发环境, 就需要创建 app/config/local 目录, 并在该目录下创建 app.php 文件, 就覆盖了默 认运行环境配置文件 app/config/app.php 中的定义. 然后还需要告诉 Laravel 怎样监测它目前正在运行的环境是否为新添加的运 行环境, 通过在 bootstrap/start.php 文件中 $app->detectEnvironment 调用中添加 'local' => array('your-machine-name'),让 Laravel 通过运行的机器名在判定应该使用那个运行环境. 还可以向 detectEnvironment 传递一个闭包, 让 Laravel 依靠其他机制判断当前运 行环境. 例如: $env = $app->detectEnvironment(function() { return $_SERVER['MY_LARAVEL_ENV']; // $_SERVER['MY_LARAVEL_ENV']; 属于敏感数据,从哪里定义见下 面解释. }); 访问当前运行环境是通过, $environment = App::environment(); ⽅方法.
你还可以向 enviroment ⽅方法中传递参数,来检查当前运⾏行环境是否匹配 给定值. if (App::environment('local')) { // The environment is local } if (App::environment('local', 'staging')) { // The environment is either local OR staging... } 有时,你可能需要"追加" 一些环境配置,而不是"覆盖" 配置, 此时需要,在相应 运行环境目录下的配置文件中使用 append_config 方法. 'providers' => append_config(array( 'LocalOnlyServiceProvider', )) 保护敏感配置 对于真正的"APP",最好保持敏感数据在配置文件外面, 例如, 数据库密 码, API keys ,加密 KEY 等等. Laravel 提供了一个非常简单的方法, 保存这些数据到 . 开头形式为 .env.环境名.php 的隐藏文件中. 例如,现在 Laravel 运行在 local 运行环境里, 那么创建在项目 root 目录下创建 .env.local.php ⽂文件,让这个⽂文件返回⼀一个"键值对 的数组" 就像 Larave 的其他配置⽂文件⼀一样: 'super-secret-sauce', ); 所有被这个文件返回的键值对,都将自动被添加到PHP 的 $_ENV 和 $_SERVER 超级变量中. 这样就可以在配置文件中引用这些变量了. 例如: 'key' => $_ENV['TEST_STRIPE_KEY'] 还要确保添加 .env.local.php 文件到 .gitignore 文件中, 使 其不会被添加到版本控制中.又可以使开发团队的其他成员创建他们自 己的本地开放环境配置文件,由可以隐藏敏感数据. 在实际生产环境创建中需要创建 .env.php 隐藏文件. 3. Internal framework/start.php file configures settings and loads
Service Providers. Framework 内部的 script 被调用, 根据监测的运行环境中配置文件对 App 进行设置, 如 timezone, error reporting 等等, 所有 Laravel 的配置文件都存储在 app/config 目录下. 访问/设置 "配置" At run-time, 访问配置值, 是通过 Config 类实现的. 访问配置值, Config::get('app.timezone'); 访问配置值,如果不存在就使用默认值, $timezone = Config::get('app.timezone', 'UTC'); 注意: 点(.)访问符语法, 访问在不同的文件中的不同值. 设置属性值, Config::set('database.default', 'sqlite'); 在运⾏行环境设置属性值只会影响到当前的请求,不会对⼦子请求有影响. 这时,还会进行一个非常重要的动作, 为 Application 对象注册所有配置过的 Service Providers. 主要指在app/config/app.php文件的providers 数组中配置的 Service Providers. 这些 Providers 是 Laraver 的 primary bootstrapping mechanism. Service Providers Service providers 是把一组相关的控制反转( IoC ) 注册在同一 个位置的好办法. 把他们想象成为你程序的一组引导组件. 在一个 Service providers 中, 你可能会注册一个自定义认证的驱动, 或者在 IoC container 中注册你程序的存储类. 甚至设置一个自定的 Artisan 命令 事实上,大部分 Laraver 的核心组建都包含在 Service Providers 中. 定义一个 Service Providers 要创建一个 Service providers ,只需要简单的扩展 Illuminate\Support\ServiceProvider 类, 定义一个 register 方法: use Illuminate\Support\ServiceProvider; class FooServiceProvider extends ServiceProvider { public function register() {
$this->app->bind('foo', function() { return new Foo; // 返回 Foo 对象 }); } } 注意: 在 register 方法中,程序的 Application IoC 容器是通 过 $this->app 属性来访问的. 当创建好自己的 Provider, 并准备注册它到 Application 中时,只 需要简单的添加它到 app/config/app.php 配置文件的 providers 数组中. 你可以在这个数据中找到一个 Server Provider 的列表. 或者要想在运行时注册一个 Provider ,需要使 用 App::register 方法 App::register('FooServiceProvider'); 本质上,每一个 Server Provider 是在容器中绑定了一个或多个的 闭包. 允许在你的 Application 中访问这些绑定的服务. 当然, Server Provider 也可以运行任何的 bootstrapping task. 一个 Server Provider 可以注册 event listeners, view composers, Artisan commands, and more. 4. Application app/start files are loaded. 当所有 Server Provider 都注册好以后, app/start 里的 Start Files 文件将被加载. Start Files 文件夹内默认这里有三个文件: global.php local.php 和 artisan.php (1) artisan.php 是关于 Artisan command line 的文件. (2) global.php 默认包含一些基础的项目,例如, 注册 Logger 和 包含你的 app/filters.php 文件. 你可以在这里面自由的添加你想 要的文件, 它将自动的添加到 application 的每个请求中, 而不考虑当 前的运行环境. (3) local.php 文件, 只有运行环境为 local 的时候,才会加载. 同 理, 如果你在 bootstrap/start.php 中配置了 development 环 境, 你就可以创建文件 app/start/development.php, 如果运行环 境是 development 的话, 它将自动的被包含进 application 中. 什么应该放到 Start Files 中? Start File 中可以存放简单的引导代码(bootstrapping code). 例
分享到:
收藏