gpt4 book ai didi

php - 使用 php-cs-fixer 修复 PHP 代码文件的缩进

转载 作者:可可西里 更新时间:2023-11-01 13:59:36 26 4
gpt4 key购买 nike

我有数百个可怕的缩进的 PHP 文件,混合制表符和空格(我想甚至混合行结尾)我想用 php-cs-fixer 修复它们v2+.

我已经根据需要配置了 php-cs-fixer,并且相应地清理了代码 - 除了缩进。我已经尝试了一个最小的配置,如下所示,来确定问题。但是我不能直接得到缩进修复器:

return PhpCsFixer\Config::create()
->setRules([
'@PSR2' => true,
'indentation_type' => true,
'braces' => ['position_after_functions_and_oop_constructs' => 'same'],
])
->setIndent("\t")
->setLineEnding("\r\n")

目前,我使用以下命令在我的 Windows 机器上运行它(这里是单个文件):

php-cs-fixer.bat fix new_user.php --config /full/windowspath/to/php_cs.dist

以防万一,生成的 php_cs.cache(包含 JSON 中实际应用的规则)文件如下所示:

{
"php": "5.6.31",
"version": "2.6.0:v2.6.0#5642a36a60c11cdd01488d192541a89bb44a4abf",
"rules": {
"blank_line_after_namespace": true,
"braces": {
"position_after_functions_and_oop_constructs": "same"
},
"class_definition": true,
"elseif": true,
"function_declaration": true,
"indentation_type": true,
"line_ending": true,
"lowercase_constants": true,
"lowercase_keywords": true,
"method_argument_space": {
"ensure_fully_multiline": true
},
"no_break_comment": true,
"no_closing_tag": true,
"no_spaces_after_function_name": true,
"no_spaces_inside_parenthesis": true,
"no_trailing_whitespace": true,
"no_trailing_whitespace_in_comment": true,
"single_blank_line_at_eof": true,
"single_class_element_per_statement": {
"elements": ["property"]
},
"single_import_per_statement": true,
"single_line_after_imports": true,
"switch_case_semicolon_to_colon": true,
"switch_case_space": true,
"visibility_required": true,
"encoding": true,
"full_opening_tag": true
},
"hashes": {
"new_students.org_.php": -151826318
}
}

这里是一些缩进严重的示例文件内容。

<?php
session_start();

include 'connect.php';
include 'functions.php';

$test= "abc";
$additional_studs = "";
if (date('m') == 12 and $term='SP') {
$yr_suffix = date('y') + 1;
} else {
$yr_suffix = date('y');
}


function dup_stud($id, $conn)
{//...
}

$i = 0;

我最恼火的是像 $test="abc"; & include 'connect.php'; 这样带有一个或多个前导制表符/空格的行正确缩进。

我对其他方法持开放态度。其他人以前一定遇到过这样的格式问题。

我也尝试过 NetBeans,它恰好对源代码进行了漂亮的格式化,但是手动打开每个文件并通过快捷方式应用源代码格式化是乏味的。

最佳答案

你应该使用 braces 固定器来强制缩进。

The body of each structure MUST be enclosed by braces. Braces should be properly placed. Body of braces should be properly indented.

indentation_type 只是强制一致性。

但由于两个修复程序都已包含在 @PSR2 中,因此应该正确修复代码。

请参阅 README 中的相关部分.


使用您的代码 php-cs-fixer 2.6 生成以下代码

<?php
$test= "abc";
$additional_studs = "";
if (date('m') == 12 and $term='SP') {
$yr_suffix = date('y') + 1;
} else {
$yr_suffix = date('y');
}


function dup_stud($id, $conn)
{//...
}

$i = 0;

缩进只是部分固定。

我把它简化为下面的代码

<?php
echo "a";
echo "b";
echo "c";

这看起来像是 php-cs-fixer 中的错误。

关于php - 使用 php-cs-fixer 修复 PHP 代码文件的缩进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46305564/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com