You are here

protected function File_Iterator_Facade::getCommonPath in Zircon Profile 8.0

Same name and namespace in other branches
  1. 8 vendor/phpunit/php-file-iterator/src/Facade.php \File_Iterator_Facade::getCommonPath()

Returns the common path of a set of files.

Parameters

array $files:

Return value

string

1 call to File_Iterator_Facade::getCommonPath()
File_Iterator_Facade::getFilesAsArray in vendor/phpunit/php-file-iterator/src/Facade.php

File

vendor/phpunit/php-file-iterator/src/Facade.php, line 75

Class

File_Iterator_Facade
Façade implementation that uses File_Iterator_Factory to create a File_Iterator that operates on an AppendIterator that contains an RecursiveDirectoryIterator for each given path. The list of unique files is returned as an array.

Code

protected function getCommonPath(array $files) {
  $count = count($files);
  if ($count == 0) {
    return '';
  }
  if ($count == 1) {
    return dirname($files[0]) . DIRECTORY_SEPARATOR;
  }
  $_files = array();
  foreach ($files as $file) {
    $_files[] = $_fileParts = explode(DIRECTORY_SEPARATOR, $file);
    if (empty($_fileParts[0])) {
      $_fileParts[0] = DIRECTORY_SEPARATOR;
    }
  }
  $common = '';
  $done = FALSE;
  $j = 0;
  $count--;
  while (!$done) {
    for ($i = 0; $i < $count; $i++) {
      if ($_files[$i][$j] != $_files[$i + 1][$j]) {
        $done = TRUE;
        break;
      }
    }
    if (!$done) {
      $common .= $_files[0][$j];
      if ($j > 0) {
        $common .= DIRECTORY_SEPARATOR;
      }
    }
    $j++;
  }
  return DIRECTORY_SEPARATOR . $common;
}