文章目录
- 遵循psr规范 https://learnku.com/docs/psr
- 所有开发分支都以develop分支作为基础分支 分支命名为feature/开头 + 基础分支 + 姓名 + 功能 + 日期。例如: feature/develop-order-zhaohao-0423
- 全部以小写英文编写,单词与单词之间使用下划线隔离
- 生成迁移文件## --path=(可选。可以是migrations文件夹下的一个目录)php bin/hyperf.php gen:migration create_users_table --table=表名命名(不允许执行删除表)创建表结构: ```create_表名_table```添加DDL: ```add_column_字段_to_表名```修改DDL: ```update_column_字段_to_表名```删除DDL: ```delete_column_字段_to_表名```添加索引: ```add_index_索引_to_表名```删除索引: ```delete_index_索引_to_表名```修改索引: 请示领导备份(sql审核)由于开发需要设置了sql审核机制,此migration为便于开发使用,sql必须有自己备份后,提交到sql审核平台
- 由于我们使用的为hyperf2.0版本 migration 表注释在2.1版本才放出,我们可以只用原生sql修改表注释,所以需要在创建表的migration文件中添加。例如:use HyperfDbConnectionDb;/*** Run the migrations.*/public function up(): void{Schema::create('user', function (Blueprint table) {table->bigIncrements('id')->comment('用户id');table->bigInteger('uid', false, true)->nullable(false)->comment('用户id');table->tinyInteger('status', false, false)->nullable(false)->default(1)->comment('用户状态 1正常');table->timestamps();table->unique('uid', 'uid');$table->index('status', 'status');});Db::statement("ALTER TABLE `users` COMMENT = '用户表'");}
- servcie方法 记得增加参数的类型以及返回值的类型,接收外部参数记得转换类型 提交代码前要在根目录下执行 composer check。其中: composer cs-fix 格式化代码,composer analyse 静态检测 每个对应的 外部接口 都要编写自动化测试 所有 队列 必须可以重复执行 所有缓存的cache key 必须在对应配置文件中配置
- 执行命令 composer cs-fix 格式化代码> composer cs-fix && composer analyse> php-cs-fixer fix $1Loaded config default from "/hyperf-skeleton/项目/.php_cs".1) 项目/app/Repositories/BaseRepository.php2) 项目/migrations/2021_04_25_153106_creat_user_wechat_table.php格式化代码的风格在项目根目录.php_cs 中定义,目前按照以下方式来格式化代码 <?phpheader = <<<'EOF'This file is part of 666.@link 666@document 666EOF;return PhpCsFixerConfig::create()->setRiskyAllowed(true)->setRules(['@PSR2' => true,'@Symfony' => true,'@DoctrineAnnotation' => true,'@PhpCsFixer' => true,'header_comment' => ['commentType' => 'PHPDoc','header' =>header,'separate' => 'none','location' => 'after_declare_strict',],'array_syntax' => ['syntax' => 'short'],'list_syntax' => ['syntax' => 'short'],'concat_space' => ['spacing' => 'one'],'blank_line_before_statement' => ['statements' => ['declare',],],'general_phpdoc_annotation_remove' => ['annotations' => ['author'],],'ordered_imports' => ['imports_order' => ['class', 'function', 'const',],'sort_algorithm' => 'alpha',],'single_line_comment_style' => ['comment_types' => [],],'yoda_style' => ['always_move_variable' => false,'equal' => false,'identical' => false,],'phpdoc_align' => ['align' => 'left',],'multiline_whitespace_before_semicolons' => ['strategy' => 'no_multi_line',],'class_attributes_separation' => true,'combine_consecutive_unsets' => true,'declare_strict_types' => true,'linebreak_after_opening_tag' => true,'lowercase_constants' => true,'lowercase_static_reference' => true,'no_useless_else' => true,'no_unused_imports' => true,'not_operator_with_successor_space' => true,'not_operator_with_space' => false,'ordered_class_elements' => true,'php_unit_strict' => false,'phpdoc_separation' => false,'single_quote' => true,'standardize_not_equals' => true,'multiline_comment_opening_closing' => true,])->setFinder(PhpCsFixerFinder::create()->exclude('public')->exclude('runtime')->exclude('vendor')->in(__DIR__))->setUsingCache(false);
- 遵循psr规范 https://learnku.com/docs/psr
- 所有开发分支都以
develop分支作为基础分支 分支命名为feature/开头 + 基础分支 + 姓名 + 功能 + 日期。例如: feature/develop-order-zhaohao-0423
develop分支作为基础分支分支命名为feature/开头 + 基础分支 + 姓名 + 功能 + 日期。例如: feature/develop-order-zhaohao-0423
- 全部以小写英文编写,单词与单词之间使用下划线隔离
- 生成迁移文件
## --path=(可选。可以是migrations文件夹下的一个目录)
php bin/hyperf.php gen:migration create_users_table --table=表名
- 命名(不允许执行删除表)
创建表结构: ```create_表名_table```
添加DDL: ```add_column_字段_to_表名```
修改DDL: ```update_column_字段_to_表名```
删除DDL: ```delete_column_字段_to_表名```
添加索引: ```add_index_索引_to_表名```
删除索引: ```delete_index_索引_to_表名```
修改索引: 请示领导
- 备份(sql审核)
- 由于开发需要设置了sql审核机制,此migration为便于开发使用,sql必须有自己备份后,提交到sql审核平台
## --path=(可选。可以是migrations文件夹下的一个目录)
php bin/hyperf.php gen:migration create_users_table --table=表名
创建表结构: ```create_表名_table```
添加DDL: ```add_column_字段_to_表名```
修改DDL: ```update_column_字段_to_表名```
删除DDL: ```delete_column_字段_to_表名```
添加索引: ```add_index_索引_to_表名```
删除索引: ```delete_index_索引_to_表名```
修改索引: 请示领导
- 由于我们使用的为hyperf2.0版本 migration 表注释在2.1版本才放出,我们可以只用原生sql修改表注释,所以需要在创建表的migration文件中添加。例如:
use HyperfDbConnectionDb;
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('user', function (Blueprint table) {table->bigIncrements('id')->comment('用户id');
table->bigInteger('uid', false, true)->nullable(false)->comment('用户id');table->tinyInteger('status', false, false)->nullable(false)->default(1)->comment('用户状态 1正常');
table->timestamps();table->unique('uid', 'uid');
$table->index('status', 'status');
});
Db::statement("ALTER TABLE `users` COMMENT = '用户表'");
}
use HyperfDbConnectionDb;
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('user', function (Blueprint table) {table->bigIncrements('id')->comment('用户id');
table->bigInteger('uid', false, true)->nullable(false)->comment('用户id');table->tinyInteger('status', false, false)->nullable(false)->default(1)->comment('用户状态 1正常');
table->timestamps();table->unique('uid', 'uid');
$table->index('status', 'status');
});
Db::statement("ALTER TABLE `users` COMMENT = '用户表'");
}
servcie方法 记得增加参数的类型以及返回值的类型,接收外部参数记得转换类型
提交代码前要在根目录下执行 composer check。其中: composer cs-fix 格式化代码,composer analyse 静态检测
每个对应的 外部接口 都要编写自动化测试
所有 队列 必须可以重复执行
所有缓存的cache key 必须在对应配置文件中配置
servcie方法 记得增加参数的类型以及返回值的类型,接收外部参数记得转换类型
提交代码前要在根目录下执行 composer check。其中: composer cs-fix 格式化代码,composer analyse 静态检测
每个对应的 外部接口 都要编写自动化测试
所有 队列 必须可以重复执行
所有缓存的cache key 必须在对应配置文件中配置
<?php
declare(strict_types=1);
use AppConstants;
/**
* 测试
* Class DevelopTest
*/
class DevelopTest
{
/**
* Test constructor.
*/
public function __construct()
{
}
/**
* @param int userId
* @return int
*/
public function test(intuserId): int
{
return $userId;
}
}
<?php
declare(strict_types=1);
use AppConstants;
/**
* 测试
* Class DevelopTest
*/
class DevelopTest
{
/**
* Test constructor.
*/
public function __construct()
{
}
/**
* @param int userId
* @return int
*/
public function test(intuserId): int
{
return $userId;
}
}
执行命令 composer cs-fix 格式化代码
> composer cs-fix && composer analyse
> php-cs-fixer fix $1
Loaded config default from "/hyperf-skeleton/项目/.php_cs".
1) 项目/app/Repositories/BaseRepository.php
2) 项目/migrations/2021_04_25_153106_creat_user_wechat_table.php
执行命令 composer cs-fix 格式化代码
> composer cs-fix && composer analyse
> php-cs-fixer fix $1
Loaded config default from "/hyperf-skeleton/项目/.php_cs".
1) 项目/app/Repositories/BaseRepository.php
2) 项目/migrations/2021_04_25_153106_creat_user_wechat_table.php
格式化代码的风格在项目根目录.php_cs 中定义,目前按照以下方式来格式化代码
<?php
header = <<<'EOF'
This file is part of 666.
@link 666
@document 666
EOF;
return PhpCsFixerConfig::create()
->setRiskyAllowed(true)
->setRules([
'@PSR2' => true,
'@Symfony' => true,
'@DoctrineAnnotation' => true,
'@PhpCsFixer' => true,
'header_comment' => [
'commentType' => 'PHPDoc',
'header' =>header,
'separate' => 'none',
'location' => 'after_declare_strict',
],
'array_syntax' => [
'syntax' => 'short'
],
'list_syntax' => [
'syntax' => 'short'
],
'concat_space' => [
'spacing' => 'one'
],
'blank_line_before_statement' => [
'statements' => [
'declare',
],
],
'general_phpdoc_annotation_remove' => [
'annotations' => [
'author'
],
],
'ordered_imports' => [
'imports_order' => [
'class', 'function', 'const',
],
'sort_algorithm' => 'alpha',
],
'single_line_comment_style' => [
'comment_types' => [
],
],
'yoda_style' => [
'always_move_variable' => false,
'equal' => false,
'identical' => false,
],
'phpdoc_align' => [
'align' => 'left',
],
'multiline_whitespace_before_semicolons' => [
'strategy' => 'no_multi_line',
],
'class_attributes_separation' => true,
'combine_consecutive_unsets' => true,
'declare_strict_types' => true,
'linebreak_after_opening_tag' => true,
'lowercase_constants' => true,
'lowercase_static_reference' => true,
'no_useless_else' => true,
'no_unused_imports' => true,
'not_operator_with_successor_space' => true,
'not_operator_with_space' => false,
'ordered_class_elements' => true,
'php_unit_strict' => false,
'phpdoc_separation' => false,
'single_quote' => true,
'standardize_not_equals' => true,
'multiline_comment_opening_closing' => true,
])
->setFinder(
PhpCsFixerFinder::create()
->exclude('public')
->exclude('runtime')
->exclude('vendor')
->in(__DIR__)
)
->setUsingCache(false);
执行脚本 composer analyse,对项目进行静态检测,便可以找到出现问题的代码段。
$ salesperson-service(develop*) » composer analyse
> phpstan analyse --memory-limit 300M -l 0 -c phpstan.neon ./app ./src ./config
181/181 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
[OK] No errors
$ salesperson-service(develop*) » composer analyse
> phpstan analyse --memory-limit 300M -l 0 -c phpstan.neon ./app ./src ./config
181/181 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
[OK] No errors




