1

我想在控制台模式下使用 php 并创建一个环境来测试我的功能。

我不想每次想测试一个功能时都被迫使用网络浏览器并创建一个新文件。

我想在控制台中访问该函数,然后返回结果。

我该怎么做呢?

更新:

也许我解释得不好。我只想看看函数返回什么结果。

也许我必须学习单元测试,但目前我只想要一个交互式控制台,它可以让我一个一个地测试所有功能。

在我的情况下,我必须加载 wordpress 函数(我知道如何使用常规.php文件,然后使用浏览器解析文件),但如果可以从命令行使用 php,我不会这样做。

4

4 回答 4

1

我想你必须更具体地说明到底是什么功能。Wordpress 不提供开箱即用的功能,大多数 PHP 应用程序不会。

我还认为,如果没有为此类环境开发此类应用程序,那么您就是在找麻烦。

这是一个尝试从functions.php调用“current_time()”的示例,我必须做的尝试只是为了意识到它不会那样工作:


php -r 'require "functions.php"; var_dump(current_time("mysql"));'


Fatal error: Call to undefined function apply_filters() in functions.php on line 346


php -r 'require "functions.php"; require "plugin.php"; var_dump(current_time("mysql"));'


Fatal error: Call to undefined function wp_cache_get() in functions.php on line 351


php -r 'require "functions.php"; require "plugin.php"; require "cache.php"; var_dump(current_time("mysql"));'


Fatal error: Call to a member function get() on a non-object in cache.php on line 93

查看我看到的源代码中的最后一个错误


 function wp_cache_get($id, $flag = '') {
     global $wp_object_cache;

     return $wp_object_cache->get($id, $flag);
 }

如果不是不可能的话,使用全局变量可以使在其他环境中进行测试成为 PITA。

如果这不是您想要做的,那么您的问题必须更加具体/详细。

于 2008-12-30T11:08:38.827 回答
1

我过去使用过 phpsh,发现它非常有用。一旦你开始它,你将需要chdir()你的文件在哪里,然后显然require()任何包含你需要测试的功能的文件。然后,您可以通过在 shell 中键入它们来测试您的函数调用,例如var_dump(some_function(1, 2));

于 2008-12-30T11:47:44.410 回答
0

您将要阅读一般意义上的“单元测试”,然后尝试将它们应用于 PHP。

您正在使用的框架(如果有的话)、代码风格和您要运行的测试将确定您需要使用的确切方法。只有首先了解单元测试的概念并将它们实施到您的编码最佳实践中,您才能在这方面取得进展。

于 2008-12-30T09:56:59.580 回答
0

怎么样:

php -a

如果你用 readline 支持编译 php,它会更花哨。

于 2008-12-30T11:08:37.140 回答