phbsis / kr04-php-lint
OKR项目!#KR04
Requires
- php: ^5.6
Requires (Dev)
- symfony/var-dumper: ^3.1
This package is auto-updated.
Last update: 2024-09-29 04:49:24 UTC
README
该项目是为了满足Chaordic Systems八周OKR任务表而创建的。然而,它可以完全由社区使用、修改或调整。KR04是为了验证您的项目中的PHP代码是否符合一些标准而创建的,其中包括:语法、PSR-2、PSR-3 和 Chaordic 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 发行版上开发。=)