jumilla/laravel-addomnipot

Laravel 扩展系统。

2.0.1 2017-09-19 10:37 UTC

README

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

日本語ドキュメント - Japanese

特性

  • 附加插件特性

    • 这是应用中的一个包特性。您可以使用图片来复制 Laravel 5 的目录结构。
    • 默认情况下,它将放置在 'addons' 目录下。
    • 您可以为插件创建一个自己的命名空间(PSR-4)。
    • 它可以作为 Laravel 5 的包。有效的命名空间表示法 {addon-name}:: 可以用于 'lang', 'view'。也可以使用 'config'。
    • 仅复制附加插件目录。您不需要向配置文件(如 'config/app.php')中添加代码。
    • 提供 9 种文具和 2 种样本。可以使用 artisan 命令 php artisan make:addon 生成。
  • 命名空间中外观问题的解决方案

    • 外观可以在应用目录下的带有命名空间的类中使用。(反斜杠和 use 声明,不必要)
    • 外观也可以在插件命名空间内部使用相同的方法处理。

如何安装

[A] 下载 Laravel 模板项目

注意:支持包发现。

这是使用已经存在的模型项目来整合 Laravel 扩展包 的一种方式。

除了 Laravel Addomnipot 的插件特性,以及基于语义版本的迁移特性 Laravel Versionia 之外,您还可以使用与插件对应的源代码生成器。

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

[B] 在现有项目中安装 laravel-plus/extension

注意:支持包发现。

这是使用 Laravel 扩展包 的一种方式。

除了 Laravel Addomnipot 的插件特性,以及基于语义版本的迁移特性 Laravel Versionia 之外,您还可以使用与插件对应的源代码生成器。

有关更多信息,请参阅文档中的 Laravel 扩展包

[C] 在现有项目中安装 jumilla/laravel-addomnipot

注意:支持包发现。

这是整合 Laravel Addomnipot 插件特性的一种方式。

1. 使用 Composer 添加包 jumilla/laravel-addomnipot

使用 composer。

composer require jumilla/laravel-addomnipot

2. 添加服务提供者。

编辑文件 config/app.php

	'providers' => [
		Illuminate\Foundation\Providers\ArtisanServiceProvider::class,
		...
		// Add the folloing line.
		Jumilla\Addomnipot\Laravel\ServiceProvider::class,
	],

检查运行

插件 wiki 已作为示例创建。

php artisan make:addon wiki sample:ui

请确认路由设置。

php artisan route:list

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

php artisan serve

命令

addon:list

列出插件。

php artisan addon:list

addons 目录文件不存在时,它会创建。

addon:status

可以检查插件的状态。

php artisan addon:status

addons 目录文件不存在时,它会创建。

addon:name

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

php artisan addon:name blog Wonderful/Blog

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

php artisan addon:name blog Wonderful/Blog -v

addon:remove

删除插件。

php artisan addon:remove blog;

addons/blog 仅删除目录。

make:addon

创建插件。下一个命令 blog 将作为 PHP 命名空间 Bloglibrary-类型的格式生成,blog-app 将作为 PHP 命名空间 BlogAppui-类型的格式生成。

php artisan make:addon blog library
php artisan make:addon blog-app ui

可以选择 10 种不同的骨架。

  • minimum - 最小结构。
  • simple - 包含 views 目录和 Http/route.php 文件的简单结构。
  • 资产 - 最小结构。
  • - 提供PHP范围和数据库的组成。
  • API - Web API的结构。
  • UI - Web UI的结构。
  • ui-sample - Web UI的示例。
  • 调试 - 将程序测试功能放入的附加组件。还包括“debug-bar”的供应商注册。
  • 生成器 - 定制用于存根文件。
  • laravel5 - Laravel 5的目录结构。
  • laravel5-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

辅助函数

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()函数检索到的LaravelPlus\Extension\Addons\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\Http\Controllers;

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

门面扩展

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

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

或者使用use声明。

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