我刚刚回到PHP并尝试从一开始就以正确的方式做事。所以我安装了 PHPLint 2.1_20151116,但我似乎无法让它与作曲家的自动加载一起工作。可能吗?
例如,我正在尝试向 Laravel/Envoy 添加一个测试用例,但我无法通过错误"未声明的父类 TestCase"。
文件夹结构为:
envoy
├── tests
│ ├── RemoteProcessorTest.php
│ ├── SSHConfigFileTest.php
│ └── TestCase.php
RemoteProcessorTest.php的内容是:
<?php
namespace LaravelEnvoy;
class RemoteProcessTest extends TestCase
{
}
如果我运行./vendor/bin/phpunit
,则会出现错误:No tests found in class "LaravelEnvoyRemoteProcessTest".
.这不是语法错误,所以看起来一切都有效。但菲普林特仍然抱怨。
$ cd envoy
$ phpl --php-version 5 --print-path relative --print-column-number --tab-size 4 --no-overall tests/RemoteProcessorTest.php
BEGIN parsing of tests/RemoteProcessorTest.php
1: <?php
2: namespace LaravelEnvoy;
3:
4: class RemoteProcessTest extends TestCase
5: {
{
_ HERE
==== 5:1: ERROR: undeclared parent class TestCase
6: }
END parsing of tests/RemoteProcessorTest.php
有解决方法吗?
我可能无法直接回答这个问题,因为有问题的存储库似乎太有限了,无法为您提供所需的内容。我会把它留给社区直接回答这个问题。
以下是一些希望对您有所帮助的替代方案。
如果你想检查语法,PHP有一个内置的linter。只是:
$ php -l filename.php
或--syntax-check
而不是-l
.
包装师也有这个作为可行的替代方案。 https://packagist.org/packages/gamegos/php-code-sniffer
它有一个名为phpcs的配置文件.xml您可以签入存储库并通过作曲家包含该文件。
# composer.json
...
require-dev {
"gamegos/php-code-sniffer": "0.4.0"
}
...
phpcs.xml 文件有一个引导标签,它将提供在您自己的类中找到 Laravel 类的信息。
<?xml version="1.0" encoding="UTF-8"?>
<ruleset>
<rule ref="Gamegos" />
<arg name="bootstrap" value="vendor/autoload.php" />
</ruleset>
使用 Composer 安装后,您将有 3 个二进制文件:
- 供应商/bin/phpcbf
- 供应商/垃圾箱/PHPC
- vendor/bin/phpcs-pre-commit
你可以在Github存储库上找到很多自定义选项。 https://github.com/gamegos/php-code-sniffer