创建模块

未匹配的标注

创建模块

使用artisan命令 php artisan module:make ModuleName 来创建一个名为 Posts 的模块:

php artisan module:make posts

这将在 Modules/Posts 路径下创建一个模块

通过分别指定模块名称,可以在一个命令中创建多个模块:

php artisan module:make customers contacts users invoices quotes

这将创建每个模块。

参数

默认情况下,当您创建一个新模块时,该命令将自动添加一些资源,如控制器、种子类、服务提供者等。如果你不想要这些,你可以添加 --plain 参数,以生成一个普通模块。

php artisan module:make Blog --plain

php artisan module:make Blog -p

其他参数如下:

生成api模块。

php artisan module:make Blog --api

不要在创建时启用该模块。

php artisan module:make Blog --disabled

php artisan module:make Blog -d

命名约定

因为我们使用 psr-4 自动加载模块,我们强烈建议使用 StudlyCase 惯例。

目录结构

Modules/
  ├── Blog/
      ├── Config/
      ├── Console/
      ├── Database/
          ├── factories/
          ├── Migrations/
          ├── Seeders/
      ├── Entities/
      ├── Http/
          ├── Controllers/
          ├── Middleware/
          ├── Requests/
      ├── Providers/
          ├── PostsServiceProvider.php
          ├── RouteServiceProvider.php
      ├── Resources/
          ├── assets/
          ├── lang/
          ├── views/
      ├── Routes/
          ├── api.php
          ├── web.php
      ├── Tests/
      ├── composer.json
      ├── module.json
      ├── package.json
      ├── webpack.mix.js

Composer.json

每个模块都有自己的 composer。这将设置模块的名称、描述和作者。通常只有当你需要更改供应商名称或有自己的 composer 依赖时,才需要更改此文件。

假设你想在这个模块中安装一个包:

"require": {
    "dcblogdev/laravel-box": "^2.0"
}

这将引入此模块的包,但它不会被加载。 所以,您必须将依赖项放在 Laravel composer.json 文件中。 存在这种情况的主要原因是为了将模块提取到包中。

Module.json

该文件详细说明了名称、别名和描述/选项:

{
    "name": "Blog",
    "alias": "blog",
    "description": "",
    "keywords": [],
    "priority": 0,
    "providers": [
        "Modules\\Blog\\Providers\\BlogServiceProvider"
    ],
    "aliases": {},
    "files": [],
    "requires": []
}

模块按优先级顺序加载,更改优先级编号,以自定义顺序启动/填充模块。

files 选项可以用来包含文件:

"files": [
    "start.php"
]

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
slowlyo
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
发起讨论 只看当前版本


暂无话题~