如何从phing ad-hoc任务中返回一个值?

时间:2013-05-25 00:30:59

标签: php phing

有没有办法从phing ad-hoc任务中获取返回值?

例如,我正在尝试从文件中的JSON字符串获取版本号,如下所示:

    <target name="get-app-version">

    <adhoc-task name="appversion" ><![CDATA[
        class AppversionTask extends Task {

            private $version;

            public function getVersion() {
                return $this->version;
            }
            function main() {
                $manifest = file_get_contents("manifest.json");
                $manifest_json = json_decode($manifest);
                $version = $manifest_json->version;
                $this->log("App version: " . $version);
                $this->version = $version;
            }
        }
    ]]></adhoc-task>
    <appversion output="version" />
    <echo message="${version}" />

</target>

我只能找到有关设置值的文档,但不能获取值。但是,adhoc typdef task似乎显示 get 语法,因此我想知道是否有某种方法可以执行此操作。

1 个答案:

答案 0 :(得分:12)

我不确定我是否完全理解。这听起来像是,而不是设置

$this->version

你应该改为呼叫

$this->project->setProperty('version', $version);

这会将'version'属性添加到项目实例中。您不需要为任务设置属性,除非您要稍后更改项目中的属性名称(从“版本”到其他属性)。

`

<adhoc-task name="appversion" ><![CDATA[
    class AppversionTask extends Task {

        function main() {
            $manifest = file_get_contents("manifest.json");
            $manifest_json = json_decode($manifest);
            $version = $manifest_json->version;
            $this->log("App version: " . $version);
            $this->project->setProperty('version', $version);
        }
    }
]]></adhoc-task>
<appversion />
<!-- The version property should now be set -->
<echo message="${version}" />

`