2013-05-25 21 views
6

Czy istnieje sposób na uzyskanie wartości zwrotnej z zadania ad hoc w phing?Jak zwrócić wartość z zadania phing ad-hoc?

Na przykład próbuję uzyskać numer wersji z ciągiem JSON w pliku w następujący sposób:

<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> 

mogę tylko znaleźć dokumentację na temat ustawiania wartości, ale nie dostaję wartości. Jednak wydaje się, że adhoc typdef task przedstawia składnię get, więc zastanawiam się, czy jest jakiś sposób, aby to zrobić.

Odpowiedz

12

Nie jestem pewien, czy rozumiem całkowicie. To brzmi jak zamiast ustawiania

$this->version

należy zamiast zadzwonić

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

Spowoduje to dodanie „wersja” właściwość instancji projektu. Nie musisz ustawiać atrybutu dla swojego zadania, chyba że powinieneś chcieć później zmienić nazwę właściwości w twoim projekcie (od "wersji" do jakiejś innej własności).

`

<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}" /> 

`

+1

Wow ... Szukałem w całym i nie mógł znaleźć -> Część projektu w jakichkolwiek dokumentach. Właśnie tego szukałem. – jloosli