PSR编码标准-PHP
刚刚开发了一个简单的CLI php代码,用于计算所选大小的乘法表,但当我检查文件以确保它们符合PSR编码标准时,它给出了四个错误/违规。经过几次尝试和几天的工作,我不知道文件中的错误在哪里 有两个文件: cliVersion.php和generateCLITable.php 第一个文件给我1个PSR错误,第二个文件给我3个PSR错误 这就是我如何在命令行上生成大小为12的乘法表:PSR编码标准-PHP,php,Php,刚刚开发了一个简单的CLI php代码,用于计算所选大小的乘法表,但当我检查文件以确保它们符合PSR编码标准时,它给出了四个错误/违规。经过几次尝试和几天的工作,我不知道文件中的错误在哪里 有两个文件: cliVersion.php和generateCLITable.php 第一个文件给我1个PSR错误,第二个文件给我3个PSR错误 这就是我如何在命令行上生成大小为12的乘法表: php cliVersion.php 12 有人能帮我找出文件中的PSR错误吗 以下是文件和错误报告: cliV
- php cliVersion.php 12
我强烈建议在这种情况下使用 我猜您正在尝试对代码进行单元测试。我可能会首先集中精力尝试对代码进行深思熟虑。以cliVersion为例,我认为通过创建一个方法来处理输入,可以大大简化它。我发现你的评论、变量和过度设计也有很多问题 修订版:
<?php
//declare(strict_types=1); // I'm using php 5 so I don't have this (but ok for you)
require_once 'generateCLITable.php';
require_once '../model/validateInput.php';
$must_be_gtr_than = 1; // set floor val for validation
$inputData = new ValidateInput($must_be_gtr_than);
$multTable = new MultTable();
if ($inputData->isValidIntegerData($argv[1])) {
$tableSize = (int) $argv[1];
$multTable->generateTable($tableSize);
} else {
echo "Error: Please enter a valid argument (a whole number greater than ".$must_be_gtr_than.")";
die();
}
更新:
我可能会这样做:
<?php
//declare(strict_types=1); // PHP5.x Example
class GenerateCLITable
{
const DEFAULT_BOARD_SIZE = 12;
public $game_board, $table_size;
public function __construct($input = self::DEFAULT_BOARD_SIZE)
{
$this->game_board = $this->generateTable($input);
}
public function generateTable($inputValue = self::DEFAULT_BOARD_SIZE)
{
$table = "";
// Create first row of table headers - green colour
for ($col=1; $col <= $inputValue; $col++) {
$table .= "\033[35m \t$col \033[0m";
}
// Create remaining rows
for ($row=1, $col=1; $row <= $inputValue; $row++) {
$table .= "\n";
// First cell is a table header - green colour
if ($col == 1) {
$table .= "\033[35m \n$row \033[0m";
}
while ($col <= $inputValue) {
$table .= "\t" . $row * $col++ ;
}
// Reset $col at the end of the row
$col = 1;
}
$this->game_board = $table;
$this->table_size = $inputValue;
return $table;
}
public function isValidInputValue($input = '', $size = 0)
{
return (!empty($input) && $input > $size) ? (is_int((int) $input)) : false;
}
}
//require_once 'generateCLITable.php';
$multTable = new GenerateCLITable();
$must_be_gtr_than = 1;
if (!$multTable->isValidInputValue($argv[1], $must_be_gtr_than)) {
echo "Error: Please enter a valid argument (a whole number greater than ".$must_be_gtr_than.")";
die();
}
$table = $multTable->generateTable((int) $argv[1]);
echo $table . "\n";
你试过了吗?我试过了,当我修复错误并运行另一个测试时,它又给了我4个未知错误。如果你能看一下的话,我刚刚添加了文件的链接。很多人都感谢一个更好的代码嗅探器,它能告诉你问题所在。试试类似的东西。这个软件包会告诉你问题是什么,它们在哪一行。谢谢Magnus,我已经尝试了PHPC并修复了错误,但是我的教授说你现在有17个错误。所以他说我上传的原始文件只有4个错误,但在用PHPC修复错误后,它们增加到了17个错误。我只是不知道错误在哪里。我使用了它并修复了所有错误,但当我把代码传递给教授时,他说我在两个文件中仍然有4个错误。我已经上传了文件,并提供了一个链接,如果有人可以看看和帮助。谢谢,那是学术作业?如果您获得了需要验证的PSR,则需要配置PHPCSFixer以更新其代码,它们不会全部自动应用。谢谢,我可以在何处以及如何更改PHPCSFixer配置?所有这些都应放入.php\u cs
文件中。更多详情请参阅。谢谢你,迈克。非常感谢。我记笔记并修改代码。你能检查一下这些代码中的PSR错误吗?请看看它们在哪里?我看到了关于新行和空格的错误,一些小错误。老实说,你真的应该关注代码。将PHP Storm等IDE设置为默认PSR2。我插入了您的代码,选择了重新格式化代码并将其放入WCS,它给了我更多的错误,因为我们使用了“制表符”。无论如何,这些都是次要的东西,关注你的命名、标记变量,以及什么时候应该使用注释,你会有很大的进步。就像我说的,你的代码很好,但太过繁重了。正如我在上一篇文章中所说的,对我来说,声明“$multTable=new multTable();”只是有时候是非常糟糕的做法,而且是你最糟糕的冒犯,因为这对我来说是你的应用程序所必需的。我会看到更多的问题,例如,你需要将你的类命名为与你的文件相同的名称。我提供了一个例子,作为一种改进,我希望你不要生气,也许可以投票给我的答案。。
cliVersion.php
----------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
generateCLITable.php
----------------------------------------------------------------------
FOUND 3 ERRORS AFFECTING 3 LINES
<?php
//declare(strict_types=1); // I'm using php 5 so I don't have this (but ok for you)
require_once 'generateCLITable.php';
require_once '../model/validateInput.php';
$must_be_gtr_than = 1; // set floor val for validation
$inputData = new ValidateInput($must_be_gtr_than);
$multTable = new MultTable();
if ($inputData->isValidIntegerData($argv[1])) {
$tableSize = (int) $argv[1];
$multTable->generateTable($tableSize);
} else {
echo "Error: Please enter a valid argument (a whole number greater than ".$must_be_gtr_than.")";
die();
}
CONST_SOMETHING = xx; //constants
var_x or varx // lowercase for vars
methodX //camel back
ClassName // ucwords for classes
etc..
<?php
//declare(strict_types=1); // PHP5.x Example
class GenerateCLITable
{
const DEFAULT_BOARD_SIZE = 12;
public $game_board, $table_size;
public function __construct($input = self::DEFAULT_BOARD_SIZE)
{
$this->game_board = $this->generateTable($input);
}
public function generateTable($inputValue = self::DEFAULT_BOARD_SIZE)
{
$table = "";
// Create first row of table headers - green colour
for ($col=1; $col <= $inputValue; $col++) {
$table .= "\033[35m \t$col \033[0m";
}
// Create remaining rows
for ($row=1, $col=1; $row <= $inputValue; $row++) {
$table .= "\n";
// First cell is a table header - green colour
if ($col == 1) {
$table .= "\033[35m \n$row \033[0m";
}
while ($col <= $inputValue) {
$table .= "\t" . $row * $col++ ;
}
// Reset $col at the end of the row
$col = 1;
}
$this->game_board = $table;
$this->table_size = $inputValue;
return $table;
}
public function isValidInputValue($input = '', $size = 0)
{
return (!empty($input) && $input > $size) ? (is_int((int) $input)) : false;
}
}
//require_once 'generateCLITable.php';
$multTable = new GenerateCLITable();
$must_be_gtr_than = 1;
if (!$multTable->isValidInputValue($argv[1], $must_be_gtr_than)) {
echo "Error: Please enter a valid argument (a whole number greater than ".$must_be_gtr_than.")";
die();
}
$table = $multTable->generateTable((int) $argv[1]);
echo $table . "\n";