小编Ste*_* RC的帖子

如何在PHP中检查函数是公共的还是受保护的

我正在构建一个API,用户请求一个'命令',它被传递给一个类.假设该命令与PUBLIC函数匹配,它将成功执行.如果命令与PROTECTED函数匹配,则需要抛出错误.

这个想法是可以通过将函数从PUBLIC更改为PROTECTED来禁用它们,而不是重命名它们或删除它们.

我目前这样做,但是如果命令是公共的还是受保护的并不重要.

<?php
/**
 * Look for Command method
 */
$sMethod = "{$sCommand}Command";
if (method_exists($this, $sMethod))
{
    /**
     * Run the command
     */
    return $this->$sMethod($aParameters);
}
Run Code Online (Sandbox Code Playgroud)

php

26
推荐指数
2
解决办法
1万
查看次数

如何在PHP shell_exec中设置命令行环境变量

我试图通过PHP中的shell_exec运行的脚本需要设置一个环境变量,其中afaik通过以下方式完成:

export VARIABLE=value
Run Code Online (Sandbox Code Playgroud)

但是,要运行脚本,我不得不这样做:

<?PHP
$sOutput = shell_exec("export VARIABLE=value && my_command_goeth_hereth");
Run Code Online (Sandbox Code Playgroud)

每次运行任何命令时,它都必须导出变量.

这是唯一的方法吗,还是我错过了一个更简单的方法?

php command-line

9
推荐指数
2
解决办法
1万
查看次数

使用PHP_CodeSniffer忽略特定警告

我正在使用密码工具模块,其中一部分是使用base64编码/解码.因此,出于显而易见的原因,我有许多变量,其中包括术语"base64".问题是,当我运行PHP_CodeSniffer工具时,它会抛出警告:"变量"... 64"包含数字,但不鼓励这样做".

有没有办法告诉PHP_CodeSniffer忽略这个特定文件的这些警告?我确信有充分的理由避免数字,但在这种情况下,我宁愿使用'base64'而不是'baseSixtyFour' ......

这就是我运行PHP_CodeSniffer的方式:

valorin@gandalf:~/workspace/library$ phpcs --standard=ZEND ./Tools/

FILE: /home/valorin/workspace/library/Tools/Password.php
--------------------------------------------------------------------------------
FOUND 0 ERROR(S) AND 6 WARNING(S) AFFECTING 5 LINE(S)
--------------------------------------------------------------------------------
  38 | WARNING | Variable "_bEncryptionBase64" contains numbers but this is
     |         | discouraged
  94 | WARNING | Variable "_bEncryptionBase64" contains numbers but this is
     |         | discouraged
  94 | WARNING | Variable "base64" contains numbers but this is discouraged
  95 | WARNING | Variable "base64" contains numbers but this is discouraged
 210 …
Run Code Online (Sandbox Code Playgroud)

php codesniffer

8
推荐指数
1
解决办法
2829
查看次数

有没有一个版本的tac枪杀内容?(比如zcat)

我正在开发一个需要以反向顺序读取日志文件的PHP脚本.

我目前正在做以下事情:

<?php
shell_exec("tac logfile.log > tmpfile.log");
$rFile = fopen("tmpfile.log", "r");
while (!feof($rFile))
{
    //logic 
}
unlink("tmpfile.log");
?>
Run Code Online (Sandbox Code Playgroud)

这很好用,因为它切换文件中的行的顺序,我从临时文件中读取.

但是,日志文件将变得庞大,我需要保持冗长的历史,所以我需要gzip文件.我发现了'zcat',我希望有'ztac'可以直接插入上面的代码......但我还没有找到它.

任何想法最简单/最好的方法是什么,不需要大量的临时文件和大量的服务器命令?

php bash

3
推荐指数
1
解决办法
1143
查看次数

有没有办法在PHPUnit中关闭特定测试的"Stop On Failure/Error"?

我正在开发一个API文档系统,并希望动态检查每个命令是否附加了文档.最简单的方法是动态循环每个命令并检查现有文档以匹配它.

我的代码看起来像这样:

public function testMissingDocs()
{
    foreach ($aCommands as $sKey => $aOptions)
    {
        $this->assertNotNull($oDocs->get($sKey));
    }
}
Run Code Online (Sandbox Code Playgroud)

这个问题是PHPUnit的StopOnFailure/Error特性,它在第一个断言失败后停止测试.我理解这个功能的原因,我想在大多数测试用例中继续使用它,但对于动态断言/测试,它会让事情变得有点困难.

有没有办法在每个测试的基础上禁用它,所以我可以检查此测试中的每个命令?

php phpunit

3
推荐指数
1
解决办法
1393
查看次数

PHPUnit性能/测试超时

我正在构建一个测试脚本,它正在检查一组命令的性能.在测试失败之前,测试脚本需要让它运行一段特定的时间.

我在PHPUnit文档网站上找到了PerformanceTestCase,但是当我尝试使用它时,我发现它的旧功能尚未包含在新版本中.(该文档是PHPUnit 3.0,我的版本是3.5).

PHPUnit 3.5中是否存在此功能的等效物,我该如何使用它?

phpunit

1
推荐指数
1
解决办法
2717
查看次数

标签 统计

php ×5

phpunit ×2

bash ×1

codesniffer ×1

command-line ×1