jumilla/laravel-extension

Laravel 扩展包

安装: 511

依赖: 0

建议者: 0

安全: 0

星标: 54

关注者: 7

分支: 5

公开问题: 1

类型:框架扩展

4.0.3 2017-09-19 10:57 UTC

README

Build Status Quality Score Code Coverage Latest Stable Version Total Downloads Software License

日本語ドキュメント - 日本語

功能

  • 基于版本的迁移功能扩展

    • 它采用基于语义版本的数据库迁移库。已包含 Laravel Versionia
    • 迁移和种子类已被纳入 Laravel 5 的目录结构。
    • 现在可以指定一个组进行迁移。
    • 现在名称附加到种子。
    • 版本指定,在类 App/Providers/DatabaseServiceProvider 中。
    • 您现在可以使用 Laravel 的迁移和种子类。
  • 附加功能

    • 它是应用程序中的一个包功能。您可以使用图像来复制 Laravel 5 的目录结构。
    • 默认情况下,它将放置在 'addons' 目录下。
    • 您可以为附加组件创建一个具有自己的名称空间(PSR-4)。
    • 它可以用作 Laravel 5 的包。可以使用有效的命名空间表示法 {addon-name}:: 使用 'lang', 'view'。也可以使用 'config'。
    • 仅复制附加组件的目录。您不需要将代码添加到配置文件中,例如 'config/app.php'。
    • 提供7种文具和两种类型的示例。可以使用 artisan 命令 php artisan make:addon 生成。
  • 文件生成命令

    • 可以通过命令行生成 Laravel 5 的类,例如控制台命令、作业、提供者等。
    • 生成器命令也可以使用自定义的占位符文件。
    • 遵守 Laravel 5 的 make:xxx 命令。命令名称和选项相同。
    • --addon 选项中,您还可以在附加组件中生成文件。
  • 命名空间中的外观问题解决方案

    • 外观可以在应用程序目录下的具有名称空间的类中使用。(反斜杠和 use 声明,不必要)
    • 外观也可以从添加组件名称空间内部使用相同的方法进行处理。

如何安装

[A] 已包含的 Laravel 项目已下载。

composer create-project laravel-plus/laravel5 <project-name>

[B] 它已安装在一个现有项目中。

1. 使用 Composer 添加包 laravel-plus/extension

使用 composer。

composer require laravel-plus/extension

2. 添加/删除服务提供者。

编辑文件 config/app.php

  • providers 部分中添加 LaravelPlus\Extension\ServiceProvider::class
  • providers 部分中删除包含 Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class 的行。
	'providers' => [
		Illuminate\View\ViewServiceProvider:class,
		...
		// Add the folloing line.
		LaravelPlus\Extension\ServiceProvider::class,
	],
	'providers' => [
		// Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class,
	],

检查运行

附加组件 wiki 已制作为例子。

php artisan make:addon wiki sample:ui

请确认路由设置。

php artisan route:list

启动本地服务器并通过浏览器访问 https://:8000/addons/wiki。当指示包名时,表示成功。

php artisan serve

命令

database:status

指示迁移和种子的定义和安装状态。

php artisan database:status

database:upgrade

在所有组的迁移中的 up() 方法执行,并创建最新版本。

php artisan database:upgrade

可以在我的灰色思考之后制作它们。

php artisan database:upgrade --seed <seed>

database:clean

在所有组的迁移中的 down() 方法执行,并返回到清洁状态。

php artisan database:clean

database:refresh

重新运行所有组的迁移。

在执行了 database:cleandatabase:upgrade 之后,相同。

php artisan database:refresh

迁移后,可以将其设置为种子。

php artisan database:refresh --seed <seed>

数据库:回滚

返回指定组的版本。

php artisan database:rollback <group>

当设置--all选项时,将删除指定组的所有版本的版本。

php artisan database:rollback <group> --all

数据库:再次

创建指定组的最新版本。

它具有与执行database:rollback <group>database:upgrade时相同的效果。

php artisan database:again <group>

迁移后,可以将其设置为种子。

php artisan database:again <group> --seed <seed>

数据库:种子

运行指定的种子。

php artisan database:seed <seed>

当省略<seed>时,运行默认种子。

php artisan database:seed

插件:状态

可以检查插件的状态。

php artisan addon:status

addons目录和config/addon.php文件不存在时,将创建它们。

插件:名称

扫描插件中的文件,并更改PHP命名空间。

php artisan addon:name blog Wonderful/Blog

如果您想确认扫描的文件,请指定-v选项。

php artisan addon:name blog Sugoi/Blog -v

插件:删除

删除插件。

php artisan addon:remove blog;

addons/blog 仅删除目录。

制作:插件

创建插件。在下一个命令中,blog以PHP命名空间形式Blog生成,使用ui类型。

php artisan make:addon blog ui

可以从9种骨架中选择。

  • 最小 - 最小结构。
  • 简单 - 具有目录views和文件route.php的简单结构。
  • - 提供PHP范围和数据库的组成。
  • API - 用于API的结构。
  • UI - 包含UI的全套。
  • 调试 - 包含程序测试设施的插件。还包括“debug-bar”服务提供者注册。
  • 生成器 - 专门用于存根文件的。
  • laravel5 - Laravel 5的目录结构。
  • sample:ui - UI插件的示例。
  • sample:auth - 包含在Laravel 5中的认证示例。

如果不通过命令参数指定形式,可以通过交互模式选择。

php artisan make:addon blog

可以通过选项指定PHP命名空间--namespace。请使用\\/作为命名空间的分隔符。

php artisan make:addon blog --namespace App\\Blog
php artisan make:addon blog --namespace App/Blog

制作:控制台

生成 artisan 命令的类。

如果您将foo指定为名称,则生成文件app/Console/Commands/Foo.php

$ php artisan make:console foo

如果您将blog指定为选项--addon,则生成文件addons/blog/classes/Commands/Foo.php

$ php artisan make:console foo --addon=blog

制作:控制器

生成控制器类。

如果您将FooController指定为名称,则生成文件app/Http/Controllers/FooController.php

$ php artisan make:controller FooController

如果您指定选项--resource,则生成资源控制器。

$ php artisan make:controller FooController --resource

如果您将blog指定为选项--addon,则生成文件addons/blog/classes/Controllers/FooController.php

$ php artisan make:controller FooController --addon=blog

制作:事件

生成事件类。

如果您将FooEvent指定为名称,则生成文件app/Events/FooEvent.php

$ php artisan make:event FooEvent

如果您将blog指定为选项--addon,则生成文件addons/blog/classes/Events/FooEvent.php

$ php artisan make:event FooEvent --addon=blog

制作:作业

生成作业类。

如果您将FooJob指定为名称,则生成文件app/Jobs/FooEvent.php

$ php artisan make:job FooJob

如果您指定选项--queued,则生成实现了ShouldQueue接口的作业类。

$ php artisan make:job FooJob --queued

如果您将blog指定为选项--addon,则生成文件addons/blog/classes/Jobs/FooJob.php

$ php artisan make:job FooJob --addon=blog

如果使用Laravel 5.0的App/Commands目录,还可以生成app/Commands/FooCommand.php

$ php artisan make:job /Commands/FooCommand

制作:监听器

生成监听器类。

如果您将FooListener指定为名称,则生成文件app/Listeners/FooListener.php。需要指定--event选项。

$ php artisan make:listener FooListener --event=bar

如果您指定选项--queued,则生成实现了ShouldQueue接口的作业类。

$ php artisan make:listener FooListener --event=bar --queued

如果您将blog指定为选项--addon,则生成文件addons/blog/classes/Listeners/FooListener.php

$ php artisan make:listener FooListener --event=bar --addon=blog

制作:中间件

生成一个中间件类。

如果指定 foo 作为名称,将生成文件 app/Http/Middleware/Foo.php

$ php artisan make:middleware foo

如果指定 blog 作为 --addon 选项,将生成文件 addons/blog/classes/Middleware/Foo.php

$ php artisan make:middleware foo --addon=blog

make:migration

生成迁移类。

如果指定 foo 作为名称,将生成文件 app/Database/Migrations/App_1_0.php

$ php artisan make:migration App_1_0

如果指定 materials 作为 --create 选项,将生成创建 materials 表的迁移类。

$ php artisan make:migration App_1_1 --create=materials

如果指定 materials 作为 --update 选项,将生成更新 materials 表的迁移类。

$ php artisan make:migration App_1_2 --update=materials

如果指定 blog 作为 --addon 选项,将生成文件 addons/blog/classes/Migrations/Blog_1_0.php

$ php artisan make:migration Blog_1_0 --addon=blog

make:model

生成 Eloquent 模型类。

如果指定 foo 作为名称,将生成与 foos 表相关的文件 app/Foo.php

$ php artisan make:model foo

如果指定 services/models/foo 作为名称,将生成与 foos 表相关的文件 app/Services/Models/Foo.php。PHP 命名空间将是 App\Services\Models

$ php artisan make:model services/models/foo

如果指定 App_1_1 作为 --migration 选项,也将生成迁移文件。这相当于执行命令 php artisan make:migration App_1_1 --create=foos 的结果。

$ php artisan make:model foo --migration=App_1_1

如果指定 blog 作为 --addon 选项,将生成文件 addons/blog/classes/Foo.php

$ php artisan make:model foo --addon=blog

make:policy

生成策略类。

如果指定 foo 作为名称,将生成文件 app/Policies/Foo.php

$ php artisan make:policy foo

如果指定 blog 作为 --addon 选项,将生成文件 addons/blog/classes/Policies/Foo.php

$ php artisan make:policy foo --addon=blog

make:provider

生成服务提供者类。

如果指定 FooServiceProvider 作为名称,将生成文件 app/Providers/FooServiceProvider.php

$ php artisan make:provider FooServiceProvider

如果指定 blog 作为 --addon 选项,将生成文件 addons/blog/classes/Providers/FooServiceProvider.php

$ php artisan make:provider FooServiceProvider --addon=blog

make:request

生成表单请求类。

如果指定 FooRequest 作为名称,将生成文件 app/Http/Requests/FooRequest.php

$ php artisan make:request FooRequest

如果指定 blog 作为 --addon 选项,将生成文件 addons/blog/classes/Requests/FooRequest.php

$ php artisan make:request FooRequest --addon=blog

make:seeder

生成种子类。

如果指定 staging 作为名称,将生成文件 app/Database/Seeds/Staging.php

$ php artisan make:request staging

如果指定 blog 作为 --addon 选项,将生成文件 addons/blog/classes/Seeds/Staging.php

$ php artisan make:request staging --addon=blog

make:test

生成 PHPUnit 测试套件类。

如果指定 FooTests 作为名称,将生成文件 tests/FooTests.php

$ php artisan make:test FooTests

如果指定 blog 作为 --addon 选项,将生成文件 addons/blog/tests/FooTests.php

$ php artisan make:test FooTests --addon=blog

辅助函数

addon($name = null)

通过名称获取插件。

$addon = addon('blog');

如果省略名称,返回包含调用类的插件。这相当于 addon(addon_name())

namespace Blog\Http\Controllers;

class BlogController
{
	public function index()
	{
		$addon = addon();	// == addon(addon_name())
		Assert::same('blog', $addon->name());
	}
}

通过 addon() 函数检索到的对象,可以访问插件的属性和资源。

$addon = addon();
$addon->path();				// {$root}/addons/blog
$addon->relativePath();		// addons/blog
$addon->phpNamespace();		// Blog
$addon->config('page.row_limit', 20);
$addon->trans('emails.title');
$addon->transChoice('emails.title', 2);
$addon->view('layouts.default');
$addon->spec('forms.user_register');

addon_name($class)

从类名称获取插件名称。类名称必须是包含命名空间的完全限定名称。通过名称获取插件。

$name = addon_name(get_class($this));
$name = addon_name(\Blog\Providers\AddonServiceProvider::class);		// 'blog'

如果省略参数,返回包含调用类的插件的名称。

<?php

namespace Blog\Controllers;

class PostsController
{
	public function index()
	{
		$name = addon_name();		// 'blog'
	}
}

外观扩展

Laravel 外观将类的静态方法调用转换为实例方法调用,这是通过在全局命名空间中创建外观类的别名实现的。对于 Laravel 5,别名加载器不仅作用于全局命名空间,要处理来自命名空间(如 App)的外观,必须在类名称前缀中放置 \

function index()
{
	return \View::make()
}

或者使用使用声明。

use View;

...

function index()
{
	return View::make()
}

Laravel 扩展具有别名加载器,它将外观类放置在插件底部的命名空间中,因此可以像 Laravel 4.2 公式文档中提到的那样使用。

function index()
{
	return View::make()
}

引导行为

  • 在文件 addons/{addon-name}/addon.json 中需要 files 条目。
  • 在文件 addons/{addon-name}/addon.php 中看到 namespace 条目,并基于 PSR-4 协议自动为所有指定为 directories 的目录建立类。

作者

古川 文生 / Fumio Furukawa (fumio@jumilla.me)

许可证

MIT