laravel blade include使用变量_如何通过模块/插件(laravel plugin)机制,灵活组织Laravel工程...

f75d97a4a53f0d5f4ea80f5411a34711.png

有时候我们需要把 Laravel 工程拆分成不同的模块或功能管理,可以分配不同的工程师负责不同的模块,也方便在不同的工程之间相互使用。

有一个 nwidart/laravel-modules 就是作为 modules 来管理的,但有些问题:

1. 生成的包里过于依赖 nwidart/laravel-modules,比如自动加载过程和 module_path 的函数依赖,造成生产环境也不能脱离,还有 modules.json 等一些啰嗦的多余文件。其实一点意义都没有,因为包通过 Laravel Service Provider 标准管理即可。
2. 目录结构和 laravel 有些出入,比如 Models,他起名叫 Entities。
3. 比如用 make-command,生成的 Command 和 Laravel 脚手架的内容也不一样,内容还有些啰嗦。

这个包解决了上面的问题,而且还可以制作标准的 composer package。

在我们实际项目里一直作为模块的管理方式,也可以考虑做成动态的插件机制。

一、安装

composer require --dev zencodex/package-make

二、使用方法

// Modules/NewPackage
php artisan package:make NewPackage

// 目录结构:

Modules/NewPackage
├── Config
│   └── config.php
├── Console
│   └── UserCommand.php
├── Database
│   ├── Migrations
│   ├── Seeders
│   │   └── NewPackageDatabaseSeeder.php
│   └── factories
├── Http
│   ├── Controllers
│   │   └── NewPackageController.php
│   ├── Middleware
│   ├── Requests
│   └── Resources
│       └── UserResource.php
├── Models
│   └── User.php
├── Providers
│   ├── NewPackageServiceProvider.php
│   └── RouteServiceProvider.php
├── Resources
│   ├── assets
│   │   ├── js
│   │   │   └── app.js
│   │   └── sass
│   │       └── app.scss
│   ├── lang
│   └── views
│       ├── index.blade.php
│       └── layouts
│           └── master.blade.php
├── Routes
│   ├── api.php
│   └── web.php
├── Tests
│   ├── Feature
│   └── Unit
├── composer.json
├── package.json
└── webpack.mix.js

三、项目里使用方法

option 1:

// app/Providers/AppServiceProvider.php

use ModulesNewPackageProvidersNewPackageServiceProvider;

class AppServiceProvider extends ServiceProvider

    public function register()
    {
        $this->app->register(NewPackageServiceProvider::class);
        ...
    }

or
Edit config/app.php, add ModulesNewPackageProvidersNewPackageServiceProvider::class to providers.

    'providers' => [
        IlluminateValidationValidationServiceProvider::class,
        IlluminateViewViewServiceProvider::class,
        ModulesNewPackageProvidersNewPackageServiceProvider::class
        ...
    ],

option 2:

// 1. edit composer.json, add following
"repositories": [
    {
        "type": "path",
        "url": "Modules/*"
    }
]

// use private package or gitlab
"repositories": [
    {
        "type": "vcs",
        "url": "git@gitlab.example.com:/newpackage.git"
    }
]

// 2. composer require local path package (replace package/newpackage to yours)
composer require package/newpackage

其他可参考:

https://github.com/zencodex/package-make​github.com
喜欢就给个 star 吧
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值