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

jlo*_*sli 6 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>
Run Code Online (Sandbox Code Playgroud)

我只能找到有关设置值的文档,但不能获取值.但是,adhoc typdef任务似乎显示了get语法,所以我想知道是否有某种方法可以做到这一点.

小智 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}" />
Run Code Online (Sandbox Code Playgroud)

`