llama-laravel / modules
Laravel 模块管理
Requires
- php: >=5.6.4
- laravel/framework: >=5.3.0
- laravelcollective/html: >=5.3.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^1.11
- mockery/mockery: ~0.9
- orchestra/testbench: ^3.1|^3.2|^3.3
- phpro/grumphp: ^0.9.1
- phpunit/phpunit: ~4
This package is not auto-updated.
Last update: 2024-09-28 20:25:22 UTC
README
llama-laravel/modules 是一个 Laravel 扩展包,用于通过模块管理大型 Laravel 应用。模块类似于 Laravel 扩展包,它包含一些视图、控制器或模型。
此扩展包在 Laravel 5 中得到支持和测试。
此扩展包受到了 nwidart/laravel-modules 的启发。
升级指南
安装
快速
要通过 composer 安装,请运行以下命令
composer require llama-laravel/modules
添加服务提供者
接下来,在 config/app.php 文件中添加以下服务提供者。
'providers' => [ Llama\Modules\ModuleServiceProvider::class, ],
接下来,在相同文件中的 aliases 数组中添加以下别名。
'aliases' => [ 'Module' => Llama\Modules\Facades\Module::class, ],
接下来,通过运行以下命令发布包的配置文件
php artisan vendor:publish --provider="Llama\Modules\ModuleServiceProvider"
自动加载
默认情况下,控制器、实体或仓库不会自动加载。您可以使用 psr-4 来自动加载您的模块。例如
{
"autoload": {
"psr-4": {
"App\\": "app/"
}
}
}
之后,您必须运行以下语句以转储自动加载器
composer dump-autoload -o
配置
modules- 用于保存生成的模块。assets- 用于保存来自每个模块的模块资产。migration- 用于保存模块迁移(如果您发布模块迁移)。seed- 用于保存模块种子(如果您发布模块种子)。generator- 用于生成模块文件夹。scan- 用于允许扫描其他文件夹。enabled- 如果true,则包将扫描其他路径。默认值为falsepaths- 包可以自动扫描的路径列表。composervendor- Composer 供应商名称。author.name- Composer 作者名称。author.email- Composer 作者电子邮件。缓存enabled- 如果true,则扫描的模块(所有模块)将自动缓存。默认值为falsekey- 缓存的名称。lifetime- 缓存寿命。
创建模块
要创建新模块,您可以简单地运行
php artisan module:make <module-name>
<module-name>- 必填。要创建的模块名称。
默认情况下,如果您创建新模块,则会自动添加一些资源,如控制器、种子类或提供者。如果您不希望这些,可以添加 --plain 标志以生成一个纯模块。
php artisan module:make <module-name> --plain #OR php artisan module:make <module-name> -p
命名约定
因为我们使用 psr-4 来自动加载模块,所以我们强烈建议使用 StudlyCase 约定。
文件夹结构
your-laravel/app/Modules/
├── Blog/
├── Config/
├── Database/
├── Seeds/
├── Http/
├── Controllers/
├── Providers/
├── Resources/
├── assets/
├── lang/
├── views/
├── Routes/
├── web.php
├── api.php
├── composer.json
├── module.json
Artisan 命令
您必须为首次使用设置模块文件夹
php artisan module:setup
创建新模块。
php artisan module:make blog
使用指定的模块。
php artisan module:use blog
在命令行中显示所有模块。
php artisan module:list
为指定的模块创建新命令。
php artisan module:make-command CustomCommand blog
#OR
php artisan module:make-command CustomCommand --command=custom:command blog
为指定的模块创建新迁移。
php artisan module:make-migration create_users_table blog
#OR
php artisan module:make-migration create_users_table blog --create=users
#OR
php artisan module:make-migration add_email_to_users_table blog --table=users
回滚、重置和刷新模块迁移。
php artisan module:migrate-rollback
#OR
php artisan module:migrate-reset
#OR
php artisan module:migrate-refresh
回滚、重置和刷新指定模块的迁移。
php artisan module:migrate-rollback blog
#OR
php artisan module:migrate-reset blog
#OR
php artisan module:migrate-refresh blog
从指定模块迁移。
php artisan module:migrate blog
从所有模块迁移。
php artisan module:migrate
为指定模块创建新种子。
php artisan module:make-seeder PostsTableSeeder blog
从指定模块种子。
php artisan module:db-seed blog
从所有模块种子。
php artisan module:db-seed
为指定模块创建新控制器。
php artisan module:make-controller SiteController blog
将指定模块的资产发布到公开目录。
php artisan module:link blog
将所有模块的资产发布到公开目录。
php artisan module:link
为指定模块创建新模型。
php artisan module:make-model User blog
为指定模块创建新服务提供者。
php artisan module:make-provider MyServiceProvider blog
为指定模块创建新策略。
php artisan module:make-policy PostsPolicy blog
为指定模块创建新路由提供者。
php artisan module:make-route blog
为指定模块创建新表单请求。
php artisan module:make-request CreateRequest blog
为指定模块创建新事件。
php artisan module:make-event CreateEvent blog
为指定模块创建新任务。
php artisan module:make-job CreateJob blog
为指定模块创建新监听器。
php artisan module:make-listener CreateListener blog --event="App\Modules\Blog\Events\CreateEvent"
为指定模块创建新中间件。
php artisan module:make-middleware CreateNewPostMiddleware blog
为指定模块创建新邮件。
php artisan module:make-mail WelcomeEmail checkout
#OR
php artisan module:make-mail WelcomeEmail checkout --markdown=emails.checkout.shipped
为指定模块创建新通知。
php artisan module:make-notification InvoicePaid checkout
#OR
php artisan module:make-notification InvoicePaid checkout --markdown=notifications.checkout.shipped
启用指定模块。
php artisan module:enable blog
禁用指定模块。
php artisan module:disable blog
更新指定模块的依赖。
php artisan module:update blog
更新所有模块的依赖。
php artisan module:update
显示模块列表。
php artisan module:list
Facades
使用模型工厂
通常,您可以使用 模型工厂 来方便地生成大量数据库记录。我已定义了一种为指定模块编写种子数据的新方法。
Module::factory(App\User::class, 50)->create()->each(function ($u) { $u->posts()->save(factory(App\Post::class)->make()); });
获取所有模块。
Module::all();
获取所有缓存的模块。
Module::getCached()
获取排序后的模块。模块将根据 module.json 文件中的 priority 键进行排序。
Module::getOrdered();
获取已扫描的模块。
Module::scan();
查找特定模块。
Module::find('name'); #OR Module::get('name');
查找模块,如果存在,则返回 Module 实例,否则抛出 Llama\Modules\Exeptions\ModuleNotFoundException。
Module::findOrFail('module-name');
获取已扫描的位置。
Module::getScannedLocations();
获取所有模块作为集合实例。
Module::toCollection();
按状态获取模块。1 表示活动状态,0 表示非活动状态。
Module::getByStatus(1);
检查指定模块。如果存在,则返回 true,否则返回 false。
Module::has('blog');
获取所有启用的模块。
Module::activated();
获取所有禁用的模块。
Module::deactivated();
获取所有模块的数量。
Module::count();
获取模块路径。
Module::getPath();
注册模块。
Module::register();
启动所有可用模块。
Module::boot();
获取所有启用的模块作为集合实例。
Module::collections();
从指定模块获取模块路径。
Module::getModulePath('name');
从指定模块获取资产路径。
Module::assetPath('name');
从本包获取配置值。
Module::config('composer.vendor');
获取使用的存储路径。
Module::getUsedStoragePath();
获取用于 cli 会话的使用的模块。
Module::used();
为 cli 会话设置使用的模块。
Module::used('name');
获取模块的资产路径。
Module::getAssetsPath();
获取模块的命名空间。
Module::getNamespace();
从特定模块获取资产 URL。
Module::asset('blog::img/logo.img');
通过给定的模块名称安装指定模块。
Module::install('llama-laravel-modules/hello');
更新指定模块的依赖。
Module::update('hello');
实体
从特定模块获取实体。
$module = Module::find('blog');
获取模块名称。
$module->getName();
获取小写模块名称。
$module->getLowerName();
获取大驼峰式模块名称。
$module->getStudlyName();
获取模块路径。
$module->getPath();
获取额外路径。
$module->getExtraPath('assets');
禁用指定模块。
$module->disable();
启用指定模块。
$module->enable();
删除指定模块。
$module->delete();
获取指定模块的命名空间。
$module->getNamespace();
自定义命名空间
当您创建一个新模块时,它也会为新模块注册新的自定义命名空间 Lang、View 和 Config。例如,如果您创建一个名为 blog 的新模块,它也会为该模块注册新的命名空间/提示 blog。然后,您可以使用该命名空间来调用 Lang、View 或 Config。以下是一些使用示例
调用 Lang
Lang::get('blog::group.name'); #OR trans('blog::group.name');
调用 View
View::make('blog::index'); #OR View::make('blog::partials.sidebar');
调用 Config
Config::get('blog.name'); #OR config('blog.name');
发布模块
您已经创建了一个 Laravel 模块吗?是的,我创建了。那么,我想发布我的模块。在哪里发布呢?这是一个问题。答案是什么?答案是 Packagist。
自动扫描供应商目录
默认情况下,vendor 目录不会自动扫描,您需要更新配置文件以允许这样做。将 scan.enabled 的值设置为 true。例如
// file config/modules.php return [ //... 'scan' => [ 'enabled' => true ] //... ];
您可以使用 module:list 命令验证模块是否已安装
php artisan module:list
发布模块
创建模块后,您确定您的模块将被其他开发者使用。您可以将您的模块推送到 github 或 bitbucket,然后您可以提交您的模块到 packagist 网站。
您可以通过以下步骤发布您的模块。
- 创建一个模块。
- 将模块推送到 github。
- 将您的模块提交到 packagist 网站。
提交到 packagist 非常简单,只需提供您的 github 仓库,点击提交即可完成。
致谢
关于 XuaNguyen
XuaNguyen 是一位专业的自由网页开发者,专注于 laravel 框架。
许可
MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件。