jumilla / laravel-extension
Laravel 扩展包
Requires
- php: ^7.0
- jumilla/laravel-addomnipot: ^2.0
- jumilla/laravel-source-generator: ^1.3
- jumilla/laravel-versionia: ^2.0
- laravel/framework: ^5.5
Requires (Dev)
- mockery/mockery: ~0.9
- phpunit/phpunit: ^6.0
- dev-master
- 4.0.3
- 4.0.2
- 4.0.1
- 4.0.0
- 3.8.2
- 3.8.1
- 3.8.0
- 3.7.1
- 3.7.0
- 3.6.2
- 3.6.1
- 3.6.0
- v3.5.4
- v3.5.3
- v3.5.2
- v3.5.1
- v3.5.0
- v3.4.1
- v3.4.0
- v3.3.0
- v3.2.0
- v3.1.0
- v3.0.0
- v2.5.1
- v2.5.0
- v2.4.3
- v2.4.2
- v2.4.1
- v2.4.0
- v2.3.8
- v2.3.7
- v2.3.6
- v2.3.5
- v2.3.4
- v2.3.3
- v2.3.2
- v2.3.1
- v2.3
- v2.2
- v2.1
- v2.0
- v1.3.2
- v1.3.1
- v1.3.0
- v1.2
- v1.1
- v1.0
- dev-develop
- dev-laravel4
This package is not auto-updated.
Last update: 2024-09-28 16:15:25 UTC
README
功能
-
基于版本的迁移功能扩展
- 它采用基于语义版本的数据库迁移库。已包含 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:clean
和 database: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