0

我只是回到 PHP 并尝试从一开始就以正确的方式做事。所以我已经安装了PHPLint 2.1_20151116,我似乎无法让它与作曲家的自动加载一起工作。可能吗?

例如,我试图向Laravel/Envoy添加一个测试用例,但我无法通过错误“未声明的父类 TestCase”。

文件夹结构为:

envoy
├── tests
│   ├── RemoteProcessorTest.php
│   ├── SSHConfigFileTest.php
│   └── TestCase.php

RemoteProcessorTest.php 的内容是:

<?php
namespace Laravel\Envoy;
class RemoteProcessTest extends TestCase
{
}

如果我运行,./vendor/bin/phpunit那么我会收到错误:No tests found in class "Laravel\Envoy\RemoteProcessTest".. 这不是语法错误,所以看起来一切都是有效的。但是phplint仍然抱怨。

$ 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 Laravel\Envoy;
3:  
4:  class RemoteProcessTest extends TestCase
5:  {

    {
    \_ HERE
==== 5:1: ERROR: undeclared parent class TestCase
6:  }
END parsing of tests/RemoteProcessorTest.php

有解决办法吗?

4

1 回答 1

-2

我可能无法直接回答这个问题,因为有问题的回购似乎太有限了,无法给你你想要的东西。我会把它留给社区直接回答这个问题。

以下是一些希望能有所帮助的替代方案。

如果你想语法检查 PHP 有一个内置的 linter。简单地:

$ php -l filename.php

--syntax-check代替-l.

packagist 上也有此作为可行的替代方案。https://packagist.org/packages/gamegos/php-code-sniffer

它有一个名为 phpcs.xml 的配置文件,您可以将其签入您的存储库并通过 composer 包含在内。

# 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
  • 供应商/bin/phpcs
  • 供应商/bin/phpcs-pre-commit

你可以在 Github repo 上找到很多自定义选项。https://github.com/gamegos/php-code-sniffer

于 2016-01-27T01:56:53.650 回答