有没有办法从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 语法,因此我想知道是否有某种方法可以执行此操作。
答案 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}" />
`