2009-08-04 11 views
2

Ich habe eine Phing-Build-Datei, die die Berechtigung bestimmter Dateien überprüft mit der <Touch> Aufgabe.Array-Eigenschaft in Phing

<target description="list of files to check permission" name="files-to-test"> 
    <property name="filesToCheck" value=""/> 
    <php expression="file_get_contents('filesToCheck.txt')" returnProperty="filesToCheck"/> 
    <foreach list="${filesToCheck}" param="file" target="permission-test"/> 
</target> 

<target description="Test the permission of files that needs to be written" name="permission-test"> 
    <touch file="${file}"/> 
</target> 

Es ruft eine extenal Datei (filesToCheck.txt), die nur eine Liste von verschiedenen Dateispeicherorte ist. Das funktioniert gut. Aber es verhindert, dass ich dieselbe Liste in meinem PHP-Code wiederverwende, wenn ich auf eine bestimmte Datei basierend auf einem bestimmten Schlüssel aus derselben externen Datei (filesToCheck.txt) zugreifen möchte.

Ich sah in der Dokumentation von Phing, fand aber keine Array-Aufgabe. Kennt jemand eine Arbeit um oder erstellt eine neue Aufgabe die einzige Lösung für die Behandlung einer Array-Eigenschaft in Phing?

Antwort

0

Sie könnten wahrscheinlich nur eine Ad-hoc-Aufgabe als schnell-n-schmutzige Lösung erstellen, oder Ihre eigene Aufgabe, um ein bisschen robuster darüber zu sein. Ich habe Phing für eine Weile selbst benutzt und nichts springt auf mich als eine Alternative zum Schreiben es selbst.

3

Ich habe am Ende eine Ad-hoc-Aufgabe erstellt, weil die Touch-Task nicht die effizienteste Möglichkeit war, nach Dateiberechtigungen zu suchen. PHP touch funktioniert nicht erwartet für Dateien, wenn der Benutzer nicht der Besitzer der Datei ist.

Dies ist die Ad-hoc-Aufgabe kam ich mit:

  <adhoc-task name="is-file-writeable"> 
      <![CDATA[ 

      class IsFileWriteableTest extends Task 
      { 
       private $file; 

          function setFile($file) 
       { 
        $filesArray = parse_ini_file('filesToCheck.ini'); 
        $this->files = $filesArray; 
       } 

       function main() 
       { 
        foreach ($this->files as $fileName => $fileLocation)  
        { 
         if (!is_writable($fileLocation)) 
         {  
          throw new Exception("No write permission for $fileLocation"); 
         } 
        } 
       } 
      } 
      ]]> 
      </adhoc-task> 

      <target description="list of files to check permission" name="files-to-test"> 
      <is-file-writeable file="/path/to/filesToCheck.ini" /> 
      </target> 
Verwandte Themen