Как собрать выходные данные пользовательской задачи phing в свойстве phing?

Фон

Я начал с этого открытого вопроса https://stackoverflow.com/questions/36602830/list-differences-between-two-directories-from-point-of-view-of-one-directory-by

Затем попытался решить эту проблему с помощью собственных утилит phing, но застрял - Как вернуть значение из цели phing?

Теперь я пытаюсь написать пользовательскую задачу Phing в соответствии с https://www.phing.info/docs/guide/trunk/ch06s06.html. Я попытался повторить список файлов в этом с намерением каким-то образом собрать то же самое в свойстве, когда задача вызывается из сборки xml -

<addedfiles message="Hello World" outputProperty="output"/>

Но я обнаружил, что атрибут outputProperty не поддерживается в вызове из XML-файла сборки.

Любые указатели на то, как это сделать, или на два других вопроса очень помогут.


person Sandeepan Nath    schedule 15.04.2016    source источник
comment
Примечание для тех, кто пытается использовать пользовательскую задачу phing как функцию (повторно используемую утилиту): имена выходных переменных должны различаться при нескольких вызовах этого свойства phing. Я передал имя выходной переменной в качестве параметра при вызове свойства и использовал то же имя для установки имени выходного свойства.   -  person Sandeepan Nath    schedule 24.05.2016


Ответы (2)


О, это просто. Мы можем установить свойство в пользовательском классе задач следующим образом:

$this->getProject()->setNewProperty('output', "hello world");

и к нему можно получить доступ в xml сборки, после вызова задачи, вот так:

<addedfiles message="Hello World" />
<echo>See ${output}</echo>
person Sandeepan Nath    schedule 15.04.2016

Вы можете улучшить свое решение, выполнив это

private $outputProperty;

public function setOutputProperty($str)
{
    $this->outputProperty = $str;
}

а затем, когда вы ловите вывод

$this->getProject()->setNewProperty($this->outputProperty, "hello world");
person corretge    schedule 11.06.2016