Skip to content

框架 ​

项目分为两个部分, 一部分为模块, 另一部分是 Poppy 模块, 为了区分, 所以 slug 的命名分为 module.{module} poppy.{poppy}

Bin ​

[v3.1] Poppy Framework 附带一个 bin 命令 poppy, 可以执行 poppy 框架的清理函数, 运行方法

Plaintext
# 清理 packages.json , 删除 poppy.json
$ ./vendor/bin/poppy clear

命令行/Console ​

创建模块 ​

创建一个 Poppy 模块并启动它.

Plaintext
$ php artisan poppy:make {slug} [-Q|--quick]

模块文件树:

Plaintext
├── configurations        # 配置文件
├── docs                  # 文档
├── resources
│   ├── lang              # 语言文件
│   │   └── zh            # 语言文件夹
│   └── views             # blade 模板
└── src
    ├── action
    ├── classes
    ├── database
    │   ├── factories
    │   ├── migrations
    │   └── seeds
    ├── events
    ├── http
    │   ├── request
    │   │   ├── api
    │   │   ├── api_mgr_app    # 4.0 MgrApp 接口文件放置位置
    │   │   ├── backend
    │   │   └── web
    │   └── routes
    ├── jobs
    ├── listeners
    ├── models
    └── testing

列出 Modules ​

列出所有的应用模块

Plaintext
$ php artisan poppy:list

+------+------------+-------------------+----------------------------------------------------+---------+
| #    | Name       | Slug              | Description                                        | Status  |
+------+------------+-------------------+----------------------------------------------------+---------+
| 1000 | 核心       | poppy.core        | Poppy Core.                                        | Enabled |
| 9001 | site       | module.site       | This is the description for the poppy site module. | Enabled |
+------+------------+-------------------+----------------------------------------------------+---------+

启用/禁用模块 ​

Plaintext
# 启用模块
$ php artisan poppy:enable {slug}

# 禁用模块
$ php artisan poppy:disable {slug}

优化模块 ​

模块优化, 清空生成的缓存等操作

Plaintext
$ php artisan poppy:optimize

Poppy 数据库管理 ​

Plaintext
poppy:migrate {slug}          执行模块的数据库迁移文件
poppy:migrate:refresh {slug}  重新执行模块数据库迁移文件
poppy:migrate:reset {slug}    回滚所有执行的数据库迁移
poppy:migrate:rollback {slug} 回滚执行完的上一个数据库迁移
poppy:migration {slug}        创建一个指定模块的数据库迁移文件

Poppy 生成器 ​

生成器工具

Bash
# 生成命令文件
$ php artisan poppy:command {slug} {name}        

# 生成控制器文件   
php artisan poppy:controller {slug} {api/web/backend} {name}

# 生成中间件文件
php artisan poppy:middleware {slug} {name} 

# 生成数据库模型文件       
php artisan poppy:model {slug} {name}

# 生成 policy 策略文件            
php artisan poppy:policy {slug} {name}     

# 生成服务提供者       
php artisan poppy:provider {slug} {name}  

# 生成 request 文件        
php artisan poppy:request {slug} {name} 

# 生成测试文件         
php artisan poppy:test {slug} {name}

# 生成模块              
php artisan poppy:make {slug}    

# 事件监听器(详细见下方)                 
php artisan poppy:listener {slug} {name}   
  
# 生成事件文件     
php artisan poppy:event {slug} {name}

生成模块监听类文件 ​

Plaintext
php artisan poppy:listener {slug} {name}
--event {event}: 事件名称, 使用 `\` 表明是全局的事件, 否则的话以为这是当前模块的事件

生成模块事件类文件 ​

Plaintext
php artisan poppy:event {slug} {name}

数据库 Seeder 和 Seed 命令 ​

Plaintext
# 生成种子文件
$ php artisan poppy:seeder {slug} {name}

# 执行模块下种子主文件或者传递参数执行指定种子文件
$ php artisan poppy:seed {slug}

创建 seeder 文件

Bash
# 生成模块的主 seeder 文件
$ php artisan poppy:seeder module.demo DemoDatabaseSeeder

# 生成模块的子 seeder 文件
$ php artisan poppy:seeder module.demo DemoDbDatabaseSeeder

注册 Seeder 以及生成 数据

PHP
# DemoDatabaseSeeder

public function run()
{
    $this->call([
        DemoDbDatabaseSeeder::class,
    ]);
}

# DemoDbDatabaseSeeder

public function run()
{
    $faker = py_faker();
    for ($start = 0; $start < 50; $start++) {
        $item = [
            'tiny_integer' => $faker->numberBetween(0, 100),
            'u_integer'    => $faker->numberBetween(100, 500),
            'var_char_20'  => $faker->words(8, true),
            'char_20'      => $faker->words(10, true),
            'text'         => $faker->sentence(30),
            'decimal'      => $faker->numberBetween(100, 6),
        ];
        DemoDb::create($item);
    }
}

执行 seed

Plaintext
$ php artisan poppy:seed module.demo
Seeding: Demo\Database\Seeds\DemoDbDatabaseSeeder
Database seeding completed successfully.

数据库 Factory 生成 ​

Plaintext
$ php artisan poppy:factory {slug} {name}
Plaintext
# 指定当前模块下的模型
$ php artisan poppy:factory module.demo DemoDbFactory --model="DemoDb"

# 指定已存在的模型
$ php artisan poppy:factory module.demo DemoDbFactory --model="\Demo\Models\DemoDb"

# 未指定模型
$ php artisan poppy:factory module.demo DemoDbFactory

生成的模型如下

PHP
<?php

/** @var \Illuminate\Database\Eloquent\Factory $factory */

use Demo\Models\DemoDb;
use Faker\Generator as Faker;

$factory->define(DemoDb::class, function (Faker $faker) {
    return [
        //
    ];
});

事件 ​

Plaintext
// Module Maked
Events\PoppyMake($slug)

// 模块启用
Events\PoppyEnabled

// 模块禁用
Events\PoppyDisabled

// 模块优化
Events\PoppyOptimized

Helpers ​

Plaintext
ArrayHelper
EnvHelper
FileHelper
HtmlHelper
ImgHelper
CookieHelper
RouterHelper
SearchHelper
StrHelper
TimeHelper
TreeHelper
UtilHelper

解析器 ​

支持 Xml,Ini,Yaml

Blade 语法 ​

Plaintext
@poppy
// You Can check if module is exist and enabled.
@endpoppy

验证 ​

Plaintext
1.语言包
 - resource/lang/zh/validator.php
2.相应的验证规则
 - Rule 类
3.FrameworkServiceProvider.php 验证正则规则

代码约定 ​

开发进行提交前按照这个清单进行下检测

PHP-CS-Fixer

PHP-CS-Fixer is a tool to automatically fix PHP Coding Standards issues, We use it for Code Specification.

测试用例完善并且通过

注释完善并且通过

注释使用 poppy/core 模块来检测[开发必备]

Plaintext
$ php artisan py-core:inspect class

代码清理过

这个指的是 IDE 进行优化导入, 选中文件夹, 然后批量进行格式化 + 优化导入

文件树 ​

Poppy Framework 文件树

Plaintext
├── README.md
├── composer.json
├── config
│   └── poppy.php
├── docs                   # 文档
│   └── build.md
├── phpunit.xml            # 单元测试文件
├── resources
│   ├── lang               # 语言包
│   ├── stubs              # make 文件生成
│   └── views              # 默认视图
│       └── template
│           ├── default.blade.php
│           └── message.blade.php
├── src
│   ├── Application        # 基本控制器继承
│   │   ├── ApiController.php
│   │   ├── Controller.php
│   │   ├── Event.php
│   │   ├── Job.php
│   │   ├── Request.php
│   │   └── TestCase.php
│   ├── Classes            # 基础加载器, Number, Resp, Traits
│   │   ├── ClassLoader.php
│   │   ├── Number.php
│   │   ├── Resp.php
│   │   └── Traits
│   │       ├── AppTrait.php
│   │       ├── HasAttributesTrait.php
│   │       ├── KeyParserTrait.php
│   │       ├── MigrationTrait.php
│   │       ├── PoppyTrait.php
│   │       └── ViewTrait.php
│   ├── Console            # 命令行
│   │   ├── Commands
│   │   │   ├── PoppyDisableCommand.php
│   │   │   ├── PoppyEnableCommand.php
│   │   │   ├── PoppyListCommand.php
│   │   │   ├── PoppyMigrateCommand.php
│   │   │   ├── PoppyMigrateRefreshCommand.php
│   │   │   ├── PoppyMigrateResetCommand.php
│   │   │   ├── PoppyMigrateRollbackCommand.php
│   │   │   ├── PoppyOptimizeCommand.php
│   │   │   └── PoppySeedCommand.php
│   │   ├── ConsoleServiceProvider.php
│   │   ├── GeneratorCommand.php
│   │   ├── GeneratorServiceProvider.php
│   │   └── Generators
│   │       ├── MakeCommandCommand.php
│   │       ├── MakeControllerCommand.php
│   │       ├── MakeMiddlewareCommand.php
│   │       ├── MakeMigrationCommand.php
│   │       ├── MakeModelCommand.php
│   │       ├── MakePolicyCommand.php
│   │       ├── MakePoppyCommand.php
│   │       ├── MakeProviderCommand.php
│   │       ├── MakeRequestCommand.php
│   │       ├── MakeSeederCommand.php
│   │       ├── MakeTestCommand.php
│   │       └── stubs
│   │           ├── command.stub
│   │           ├── controller.resource.stub
│   │           ├── controller.stub
│   │           ├── event.stub
│   │           ├── listener.stub
│   │           ├── listener-duck.stub
│   │           ├── listener-queued.stub
│   │           ├── listener-queued-duck.stub
│   │           ├── middleware.stub
│   │           ├── model.stub
│   │           ├── policy.stub
│   │           ├── provider.stub
│   │           ├── request.stub
│   │           ├── seeder.stub
│   │           └── test.stub
│   ├── Database          # 数据库集成器
│   │   └── Migrations
│   │       └── Migrator.php
│   ├── Events            # 提供的事件
│   │   └── PoppyMake.php
│   ├── Exceptions        # 异常
│   │   ├── AjaxException.php
│   │   ├── ApplicationException.php
│   │   ├── ArithmeticException.php
│   │   ├── BaseException.php
│   │   ├── DoException.php
│   │   ├── FakerException.php
│   │   ├── LoadConfigurationException.php
│   │   ├── ModuleNotFoundException.php
│   │   ├── ParamException.php
│   │   ├── PolicyException.php
│   │   ├── PoppyException.php
│   │   ├── RbacException.php
│   │   ├── RuntimeException.php
│   │   ├── TestException.php
│   │   └── TransactionException.php
│   ├── Facade        # 门面
│   │   ├── IniFacade.php
│   │   ├── XmlFacade.php
│   │   ├── YamlFacade.php
│   ├── Filesystem        # 文件系统
│   │   └── Filesystem.php
│   ├── Foundation        # Kernal 以及异常处理
│   │   ├── Application.php
│   │   ├── Bootstrap
│   │   │   └── RegisterClassLoader.php
│   │   ├── Console
│   │   │   └── Kernel.php
│   │   ├── Contracts
│   │   │   └── Bootstrap.php
│   │   ├── Exception
│   │   │   └── Handler.php
│   │   └── Http
│   │       └── Kernel.php
│   ├── FrameworkServiceProvider.php
│   ├── Helper           # 帮助文件
│   │   ├── ArrayHelper.php
│   │   ├── CookieHelper.php
│   │   ├── EnvHelper.php
│   │   ├── FileHelper.php
│   │   ├── HtmlHelper.php
│   │   ├── ImageHelper.php
│   │   ├── RouterHelper.php
│   │   ├── SearchHelper.php
│   │   ├── StrHelper.php
│   │   ├── TimeHelper.php
│   │   ├── TreeHelper.php
│   │   └── UtilHelper.php
│   ├── Http            # 控制器相关, 中间件, 分页
│   │   ├── Middlewares
│   │   │   └── EnableCrossRequest.php
│   │   └── Pagination
│   │       └── PageInfo.php
│   │   └── BladeServiceProvider.php
│   ├── Parse           # 解析器
│   │   ├── Ini.php
│   │   ├── ParseServiceProvider.php
│   │   ├── Xml.php
│   │   └── Yaml.php
│   ├── Poppy           # poppy 加载的模块操作
│   │   ├── Abstracts
│   │   │   └── Repository.php
│   │   ├── Contracts
│   │   │   └── Repository.php
│   │   ├── Events
│   │   │   └── PoppyOptimized.php
│   │   ├── FileRepository.php
│   │   ├── Poppy.php
│   │   └── PoppyServiceProvider.php
│   ├── Support            # 支援文件
│   │   ├── Abstracts
│   │   │   └── Repository.php
│   │   ├── PoppyServiceProvider.php
│   │   └── functions.php
│   ├── Translation       # 多语言
│   │   ├── TranslationServiceProvider.php
│   │   └── Translator.php
│   └── Validation        # 验证规则
│       └── Rule.php
└── tests                 # 测试文件

参考 & Docs ​