This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
symfony/tests/lib/vendor/lime/LimeRegistration.php
2010-01-04 15:26:20 +01:00

96 lines
2.1 KiB
PHP

<?php
/*
* This file is part of the Lime framework.
*
* (c) Fabien Potencier <fabien.potencier@symfony-project.com>
* (c) Bernhard Schussek <bernhard.schussek@symfony-project.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
class LimeRegistration
{
protected
$files = array(),
$extension = '.php',
$baseDir = '';
public function setBaseDir($baseDir)
{
$this->baseDir = $baseDir;
}
public function setExtension($extension)
{
$this->extension = $extension;
}
public function getFiles()
{
return $this->files;
}
public function register($filesOrDirectories)
{
foreach ((array) $filesOrDirectories as $fileOrDirectory)
{
if (is_file($fileOrDirectory))
{
$this->files[] = realpath($fileOrDirectory);
}
elseif (is_dir($fileOrDirectory))
{
$this->registerDir($fileOrDirectory);
}
else
{
throw new Exception(sprintf('The file or directory "%s" does not exist.', $fileOrDirectory));
}
}
}
public function registerGlob($glob)
{
if ($dirs = glob($glob))
{
foreach ($dirs as $file)
{
$this->files[] = realpath($file);
}
}
}
public function registerDir($directory)
{
if (!is_dir($directory))
{
throw new Exception(sprintf('The directory "%s" does not exist.', $directory));
}
$files = array();
$currentDir = opendir($directory);
while ($entry = readdir($currentDir))
{
if ($entry == '.' || $entry == '..') continue;
if (is_dir($entry))
{
$this->registerDir($entry);
}
elseif (preg_match('#'.$this->extension.'$#', $entry))
{
$files[] = realpath($directory.DIRECTORY_SEPARATOR.$entry);
}
}
$this->files = array_merge($this->files, $files);
}
protected function getRelativeFile($file)
{
return str_replace(DIRECTORY_SEPARATOR, '/', str_replace(array(realpath($this->baseDir).DIRECTORY_SEPARATOR, $this->extension), '', $file));
}
}