Laravel

Laravel 5 中文手册(十二):外观 Facades

介绍

Facades 为应用的 IoC container 的类提供了一个静态的接口。Laravel 里面自带了一些 Facades,其实你应该已经用到它们了,不过可能还不知道它们是什么。Laravel 的 Facades 像是 Ioc container 类的静态代理,比起传统的静态方法(Static methods),Facades 更简洁,也更容易表达,更具可测性(Testability)与灵活性(Flexibility)。

有时候你可能需要为你的应用跟包去创建自己的 Facades,下面我们就一起去看一下相关的概念,开发,还有这些类的用法。

注意:在了解 Facades 之前,你最好先了解一下 Laravel 里的 Ioc Container

Laravel 5 中文手册(十一):合同 Contracts

Laravel 的合同(Contracts)就是在框架里定义核心服务的一些接口。比如,一个 Queue 合同定义了队列工作需要用到的一些方法,Mailer 合同里边定义了发送邮件要用的一些方法。

框架为每个合同都提供了一个对应的实施。比如,Laravel 提供了一个 Queue 实施,里面有各种驱动,Mailer 实施里面用的是 SwiftMailer 。

所有的 Laravel 合同都在各种的 Github 仓库里。这为所有可用的合同,都提供了一个可以快速查看参考的地方,这样其它的开发者可以使用这些独立的,解耦的包。

Laravel 5 中文手册(十):服务容器 Service Container

介绍

Laravel Service Container 是管理类的依赖的强大的工具。依赖注入(Dependency injection)其实就是使用类的构造函数或者 setter 方法,把类所依赖的东西注入到类里面。

来看个简单的示例:

<?php namespace App\Handlers\Commands;

use App\User;
use App\Commands\PurchasePodcast;
use Illuminate\Contracts\Mail\Mailer;

class PurchasePodcastHandler {

    /**
     * The mailer implementation.
     */
    protected $mailer;

    /**
     * Create a new instance.
     *
     * @param  Mailer  $mailer
     * @return void
     */
    public function __construct(Mailer $mailer)
    {
        $this->mailer = $mailer;
    }

    /**
     * Purchase a podcast.
     *
     * @param  PurchasePodcastCommand  $command
     * @return void
     */
    public function handle(PurchasePodcastCommand $command)
    {
        //
    }

}

在上面例子里,PurchasePodcast 命令处理器需要在有人购买了 podcast 以后去发送 e-mail 。所以,我们要去注入一个可以发送邮件的服务。因为这个服务是注入进来的,所以我们就可以很容易把它换成其它的实施。 在 “mock” 的时候也会很容易,或者在测试应用的时候,去创建一个假的 mailer 实施。

要去创建大型的应用,或者为 Laravel 核心做贡献,都需要深入的理解 Laravel Service Container 。

Laravel 5 中文手册(九):服务提供者 Service Providers

介绍

Service Providers 是所有 Laravel 应用启动(Bootstrapping)的中心位置。包括你自己的应用,还有所有 Laravel 的核心服务都是通过 Service Providers 启动的。

启动的大概的意思就是去注册一些东西,包括注册 Service Container,事件监听器,过滤器,甚至是路由。Service Providers 是配置你的应用的中心位置。

打开 Laravel 里的 config/app.php 文件,你会看到一个 providers 数组。这些就是你的应用要加载的所有的 Service provider 类。这里面有些是延迟(deferred)Providers ,意思就是它们不会在每次请求的时候都去加载,只有在真正需要它们提供的服务的时候才会被载入进来。

在下面我们学一下怎么样创建自己的 Service Providers ,并且把它们注册到 Laravel 的应用里。

Laravel 5 中文手册(八):视图 Views

基本用法

在视图里面包含了应用要提供的 HTML,它的主要的作用就是去把控制器还有 domain 逻辑跟展示的逻辑分离开。视图文件存储在 resources/views 这个目录里面。

resources/views
├── app.blade.php
├── auth
│   ├── login.blade.php
│   ├── password.blade.php
│   ├── register.blade.php
│   └── reset.blade.php
├── emails
│   └── password.blade.php
├── errors
│   └── 503.blade.php
├── home.blade.php
├── vendor
└── welcome.blade.php

4 directories, 9 files

Laravel 5 中文手册(七):响应 Responses

基本的响应

从路由上返回字符串

Laravel 的路由,最基本的响应就是一个字符串:

Route::get('/', function()
{
    return 'Hello World';
});

创建自定义的响应

对于大部分路由还有控制器动作,你都需要返回一个完整 Illuminate\Http\Response 实例或者一个视图。返回完整的 Response 实例,可以让你去定制响应的 HTTP 的状态码还有头部信息。Response 实例继承了 Symfony\Component\HttpFoundation\Response ,提供了很多种方法来创建 HTTP 响应:

use Illuminate\Http\Response;

return (new Response($content, $status))
              ->header('Content-Type', $value);

Laravel 5 中文手册(六):请求 Requests

获取请求的实例

通过 Facade

Request 这个 facade 可以让我们得到绑定在容器里的当前这个请求。比如:

$name = Request::input('name');

注意,如果你在一个命名空间里,你需要在类文件的顶部使用 use Request;  这条声明来导入 Request 这个 facade 。

通过依赖注入

要通过依赖注入得到当前 HTTP 请求的实例,需要在你的控制器构造函数或者方法里 type-hint 类。当前请求的这个实例会被 Service Container 自动注入进来。

Laravel 5 中文手册(五):控制器 Controller

介绍

不要把所有处理请求的逻辑都放到一个单独的 routes.php 文件里,我们可以使用控制器去组织这些行为。Controller 可以把相关的处理 HTTP 请求的逻辑放到一个类里面。一般控制器都放在 app/Http/Controllers 这个目录的下面:

app/Http/Controllers
├── Auth
│   ├── AuthController.php
│   └── PasswordController.php
├── Controller.php
├── HomeController.php
└── WelcomeController.php

1 directory, 5 files

Laravel 5 中文手册(四):中间件 Middleware

介绍

HTTP 中间件提供了一种方便的机制,可以去过滤进入到应用里的 HTTP 请求。比如在Laravel 里包含的中间件,可以验证网站的用户是否登录了。如果用户没登录的话,中间件会把用户重定向到登录的界面上。如果用户已经登录了,中间件会让请求可以进一步去执行应用。

中间件还有很多种用法,你可以创建不同的中间件去执行不同的任务。比如一个 CORS 中间件可以负责为离开应用的响应去添加合适的头部信息。一个日志中间件可以记录所有对应用的请求的日志。

Laravel 框架本身自带了一些中间件,包括维护,验证身份,CSRF 保护等等。这些中间件会存储在 app/Http/Middleware 这个目录的下面。

app/Http/Middleware
├── Authenticate.php
├── RedirectIfAuthenticated.php
└── VerifyCsrfToken.php

0 directories, 3 files

Laravel 5 中文手册(三):路由 Routing

基本路由

应用里的大部分的路由都是在 app/Http/routes.php 这个文件里定义的,这个文件会被 App\Providers\RouteServiceProvider 这个类载入进来。最基本的路由就是一个简单的 URI 带一个 Closure:

基本的 GET 路由

Route::get('/', function()
{
    return 'Hello World';
});

当访问应用的根(/)的时候,就会使用上面定义的这个路由,这个路由做的事,就是使用在这个路由里的 Closure,也就是匿名函数,这里就是返回 Hello World 这几个字。

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点