Laravel 7 有哪些新特性和功能改进?

2020-03-0409:23:19后端程序开发Comments2,579 views字数 3166阅读模式

Laravel 7 有哪些新特性和功能改进?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

Laravel 7 的正式发布日期为 2020年3月3日。根据 Laravel Framework 每6个月的主要 laravel 版本发布策略(2月和 8月),它是另一个主要版本。它不是 LTS 版本,因此根据 Laravel 版本支持政策,他们提供 2020年9月3日之前的 6个月错误修复,以及直到 2021年3月3日之前的 1年安全问题修复支持。让我们看一下 Laravel 7 的新功能和改进。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

Laravel 7的新功能文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

● Laravel Airlock文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

● 适用于 HTTP 客户端的 Zttp文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

● CORS 支持文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

● 自定义 Eloquent Cast文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

● 流畅的字符串操作文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

● Blade X文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

● 可定制的 Stubs文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

● 查询时间转换文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

● 多个邮件驱动程序文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

● 新 Artisan 命令文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

Laravel 7 中的改进文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

● 路由模型绑定改进文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

● 2倍更快的路由文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

● 数据库队列改进文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

● Markdown 邮件模板改进文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

● 以及更多的错误修复和改进。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

Laravel Airlock文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

Laravel Airlock 是用于API身份验证的官方软件包。它提供了简单的令牌基础 API 身份验证,令牌发行,令牌能力,移动应用程序身份验证等。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

HTTP客户端的Zttp文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

使用 Zttp,向 API 发出 HTTP 请求将是更好,更简洁的方法。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

发布请求文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

1文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

2文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

3文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

4文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

5文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

6文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

<?php文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

use Illuminate\Support\Facades\Http;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

$response = Http::post($url);文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

$response = Http::post($url, [文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

    'site' => 'Laravel Article',文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

]);文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

获取响应文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

1文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

2文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

$response = Http::get($url);文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

$response = Http::get($url,['foo'=>'bar']);文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

带请求头文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

1文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

2文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

3文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

$response = Http::withHeaders(['foo' => 'bar'])->post($url, [文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

    'baz' => 'qux',文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

]);文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

响应文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

1文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

2文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

3文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

4文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

5文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

$response['foo']文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

$response->body()文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

$response->json()文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

$response->status()文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

$response->ok()文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

CORS 支持文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

现在 Laravel 7 开箱即用地支持 CORS (跨域资源共享)。你应该更了解每个开发者在 API 开发中都遇到过 CORS 问题。现在,Laravel 7 使用配置值自动响应 OPTION 请求。Laravel 7 开箱即用的 HandleCors 中间件可以搞定一切。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

自定义 Eloquent Cast文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

Laravel 7 中的自定义 eloquent casting 是另一个很酷的功能。此功能将使您能够添加自定义 casts。让我们看一下 JSON Caster。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

1文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

2文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

3文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

4文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

5文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

6文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

7文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

8文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

9文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

10文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

11文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

12文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

13文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

<?php文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

use Illuminate\Contracts\Database\Eloquent\CastsAttributes;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

class Json implements CastsAttributes文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

{文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

    public function get($model, $key, $value, $attributes)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

    {文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

        return json_decode($value, true);文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

    }文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

    public function set($model, $key, $value, $attributes)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

    {文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

        return json_encode($value);文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

    }文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

}文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

现在,我们可以在模型中使用自定义的 eloquent cast 了。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

1文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

2文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

3文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

4文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

5文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

6文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

7文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

8文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

9文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

10文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

<?php文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

namespace App;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

use App\Casts\Json;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

use Illuminate\Database\Eloquent\Model;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

class User extends Model文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

{文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

    protected $casts = [文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

        'extra' => Json::class,文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

    ];文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

}文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

流畅的字符串操作文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

在 Laravel 7 中,您可以使用 Illuminate\Support\Str 类来做更多更酷的面向对象的事情。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

1文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

2文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

3文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

4文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

5文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

$currentVersion = (string) Str::of('  Laravel 6.x ');文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

return $currentVersion->trim()文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

        ->replace('6.x', '7.x')文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

        ->slug();文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

// laravel-7x文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

Blade X文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

Laravel 7 Blade X 功能使您能够制作 class-less 的组件。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

生成 x-component文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

1文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

2文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

3文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

4文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

5文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

6文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

7文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

8文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

@php($user = $user ?? Auth::user())文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

@php($size = $size ?? 50)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

<img文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

    class="inline-block rounded-full"文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

    src="{{ $user->gravatarUrl($size) }}"文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

    width="{{ $size }}"文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

    height="{{ $size }}"文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

/>文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

Blade x 用法文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

1文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

2文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

3文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

<x-avatar/>文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

<x-avatar size="40" />文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

<x-avatar size="100" />文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

自定义 Stubs文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

现在,您可以使用 artisan 命令在 Laravel 7.x 中自定义 stubs。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

1文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

php artisan stub:publish文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

查询时间转换文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

Laravel 7 提供了 withCasts 方法,可帮助您在运行查询时强制转换值。让我们举个例子。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

1文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

2文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

3文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

4文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

5文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

6文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

$users = User::select([文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

    'users.*',文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

    'last_posted_at' => Post::selectRaw('MAX(created_at)')->whereColumn('user_id', 'users.id')文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

])文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

->withCasts(['last_posted_at' => 'date'])文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

->get();文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

多个邮件驱动程序文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

Laravel 7 将允许您使用单个应用程序设置多个邮件驱动程序。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

1文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

2文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

3文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

Mail::mailer('noreply')文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

        ->to($request->user())文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

        ->send(new PostUpdated($post));文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

新 Artisan 命令文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

Laravel 7 中添加了一个新的 artisan 测试命令。新的 artisan 测试命令为您提供了精美的 UX 和有关测试的有用信息。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

1文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

php artisan test文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

Laravel 7 中的改进文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

● 路由模型绑定改进文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

● 2倍更快的路由文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

● 数据库队列改进文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

● Markdown 邮件模板改进文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

● 以及更多的错误修复和改进。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

路由模型绑定改进文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

自定义 Key文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

默认情况下,路由模型绑定与 id 字段一起使用。现在您可以自定义它。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

1文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

2文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

3文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

Route::get('posts/{post:slug}', function (App\Post $post) {文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

    return $post;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

});文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

自动作用域文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

Laravel 7 将使用其辨别惯例使用的方法来确认程序中的关系调用,从而自动确定查询的范围以检索嵌套模型。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

1文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

2文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

3文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

4文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

5文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

use App\Post;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

use App\User;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

Route::get('api/users/{user}/posts/{post:slug}', function (User $user, Post $post) {文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

    return $post;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

});文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

2倍更快的路由文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

使用 route:cache 时,Laravel 7 的路由匹配性能比 laravel 6 快 2倍文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

数据库队列改进文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

Laravel 7 对使用 MySQL 8+ 作为数据库支持队列的应用程序进行了改进。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

Markdown 邮件模板改进文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

使用 Tailwind CSS 调色板,邮件的默认 markdown 模板外观更加新颖。可以根据需要发布和自定义模板。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/17889.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/bc/17889.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定