2009-08-04 5 views
2

У меня есть файл сборки phing, который проверяет разрешение определенных файлов с помощью задачи <touch>.Array property 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> 

Он называет extenal файл (filesToCheck.txt), который является просто список различных расположений файлов. Это прекрасно работает. Но это мешает мне повторно использовать один и тот же список в моем PHP-коде, когда я хочу получить доступ к определенному файлу на основе определенного ключа из того же внешнего файла (filesToCheck.txt).

Я просмотрел документацию Phing, но не нашел массив Task. Кто-нибудь знает о работе или создает новую задачу единственное решение для обработки свойства массива в Phing?

ответ

0

Возможно, вы могли бы просто создать специальную задачу как быстрое n-грязное решение или свою собственную задачу, чтобы быть более уверенной в этом. Я использовал Пинга какое-то время, и ничто не выскакивает на меня как альтернатива самому писать.

3

В результате я создал специальную задачу, потому что задача касания была не самым эффективным способом проверки прав доступа к файлам. PHP touch не работает должным образом для файлов, если пользователь не является владельцем файла.

Это одноранговой задача, которую я придумал:

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