phbsis/kr04-php-lint

v0.5 2017-11-22 18:03 UTC

This package is auto-updated.

Last update: 2024-09-29 04:49:24 UTC


README

该项目是为了满足Chaordic Systems八周OKR任务表而创建的。然而,它可以完全由社区使用、修改或调整。KR04是为了验证您的项目中的PHP代码是否符合一些标准而创建的,其中包括:语法、PSR-2、PSR-3Chaordic Patterns

依赖项

  • PHP 5.6+
  • Composer

安装

要安装KR04,请使用Composer。本文档假定您已在您的机器上安装了Composer。如果您需要安装Composer,请遵循官方文档。以下是一个配置composer.json文件的示例。

{
    "require": {
        "phbsis/kr04-php-lint": "^0.5.0"
    },
    "scripts": {
        "post-install-cmd": [
            "php -r \"copy('vendor/phbsis/kr04-php-lint/index.php', 'checker-kr04');\""
        ],
        "post-update-cmd": [
            "php -r \"copy('vendor/phbsis/kr04-php-lint/index.php', 'checker-kr04');\""
        ]
    }
}

配置完composer.json文件后,运行composer install命令并等待安装完成。

$ composer install

在过程结束后,如果一切顺利,您将在项目根目录中看到checker-kr04文件;这将是KR04库的可执行文件

如何使用KR04

默认情况下,库已经包含语法、PSR-2、PSR-3和Chaordic Systems使用的检查器。重要的是要说明,上述PSR中并未实现所有规则。继续使用说明,假设您已经处于项目的根目录中,只需在终端运行以下命令即可:

php checker-kr04

终端中的特殊参数

KR04也提供了一些可以在执行PHP文件检查时传递的参数。以下是可以由系统使用的属性列表。如果需要,还可以通过KR04\Cli\Commands依赖注入接收参数,这是每个Checker都拥有的。

list:列出系统中注册的所有Checkers。

php checker-kr04 --list

stop:在发现第一个错误时停止执行。

php checker-kr04 --stop

only:仅执行作为参数传递的Checkers。

php checker-kr04 --only=chaordicpatternchecker,syntaxchecker

except:执行除作为参数传递的Checkers之外的所有Checkers。

php checker-kr04 --except=syntaxchecker

创建新的检查规则

可以创建新的规则以满足项目的特定需求。创建新规则非常简单,但必须遵循一些步骤以确保系统的正确运行。一个新的规则类(Checker)看起来像这样:

<?php
namespace KR04\Checkers;

use KR04\Checkers\Checker;
use KR04\Files\Loader;
use KR04\Cli\Commands;

class TesteChecker extends Checker
{

    public function __construct(Loader $loader, Commands $commands)
    {
        parent::__construct($loader, $commands);
    }

    protected function check()
    {
        /**
         * Aqui ficarão suas implementações de checagem das regras
         */
        return $this;
    }

    protected function configure()
    {
        /**
         * Aqui ficarão suas implementações de configurações
         * Este método será executado antes do método check()
         */
        return $this;
    }
}

所有用作Checker的类都需要遵循以下规则

  • namespace设置为KR04\Checkers
  • 继承KR04\Checkers\Checker
  • 实现protected function configure()方法

保存新的Checker类

KR04使用PSR-4进行实现,这为同一namespace提供了路径的灵活性。因此,为了确保您的规则不会与默认实现的规则混淆,namespace KR04\Checkers也对应于路径./checkers/,即项目根目录下名为checkers的目录。因此,为了保存您的类,请在项目根目录下创建一个名为checkers的目录,并将您的类保存到该目录中。

访问文件内容

每个Checker类都有访问属性$this->loader。该属性包含一个类型为KR04\Files\Loader的对象的引用,该对象包含一个公开方法$this->loader->getOutput(),该方法返回一个包含已加载文件内容的数组。该数组的层次结构如下所示:

[
    [‘./index.php’] => [
        “string” =>  ‘<?php
              echo “isso é um teste”;’,
        “array” => [
             0 => ‘<?php’,
             1 => ‘    echo “isso é um teste”;’
        ]
    ]
    // mais arquivos...
]

请注意,此数组包含以下模式:

  • 数组中的每个索引都填充了当前文件的路径。
  • 数组中的每个索引,当访问时,将返回一个包含当前文件内容的子数组,该子数组的一个索引包含整个文件(字符串索引)或按行(数组索引)。重要的是要指出,'array' 索引返回一个子数组,其中每个位置代表文件中的一行。

将新类注册到执行队列中

为了使您的类能够执行,它需要在执行容器中注册。此注册可以通过将类文件的完整名称作为参数传递给 setChecker(…) 方法来完成,该名称位于 checker-kr04 文件中。下面是一个注册示例:

    // código omitido
    $checkerContainer->setChecker(\KR04\Checkers\PsrChecker::class);
    $checkerContainer->setChecker(\KR04\Checkers\ChaordicPatternChecker::class);
    // registrando aqui uma classe TesteChecker
    $checkerContainer->setChecker(\KR04\Checkers\TesteChecker::class);

    // init the verification into the files
    new KR04\Linter($checkerContainer, $commands);
   // código omitido

忽略目录和文件

我们并不总是想加载某些文件,因此我们实现了一些轻松配置 KR04 的方法。为了执行此类操作,只需将文件的相对路径添加到数组 $this->ignoreFile 的索引中。此数组位于 ./vendor/phbsis/kr04-php-lint/src/Config/Config.php 文件中。有一个特定方法用于启动此类操作的配置。以下是一个要忽略的文件示例:

    // código omitido
    private function configure()
    {
        $this->ignoreFile = [
            $this->rootDirectory . 'header-desktop.php',
            $this->rootDirectory . 'template.php'
        ];
    }
    // código omitido

相同的步骤也可以用来忽略目录(及其子目录),但负责包含此“黑名单”目录的数组是另一个:$this->ignoreDirectory。以下是一个要忽略的目录示例:

    // código omitido
    private function configure()
    {
        $this->ignoreDirectory = [
            $this->rootDirectory . 'api/',
            $this->rootDirectory . 'css/',
            $this->rootDirectory . 'images/'
        ];
    }
    // código omitido

忽略代码块或仅一行

存在特定的标签来指示要忽略的代码段,它们是:

  • @ignore:开始一个要忽略的代码块
  • @ignoreline:指示该行应被忽略
  • @endignore:结束一个已忽略的代码块

以下是一些使用这些标签的示例:使用 @ignore@endignore

    // @ignore    aqui inicia a tag
    var_dum([‘teste’]);  // este var_dump será ignorado
    var_dum($this);  // este var_dump será ignorado
    // @endignore   fim da tag

使用 @ignoreline

    var_dum($response);  // @ignoreline  esta linha será ignorada
    return $response;

致谢

此项目由 Edson B S Monteiro 开发 - bruno.monteirodg@gmail.com 此应用程序自豪地在一个 Linux 发行版上开发。=)

LAUS DEO