diff --git a/src/Symfony/Component/Config/FileLocator.php b/src/Symfony/Component/Config/FileLocator.php index 0da2ad6366675..71bb5ab0ba305 100644 --- a/src/Symfony/Component/Config/FileLocator.php +++ b/src/Symfony/Component/Config/FileLocator.php @@ -31,18 +31,14 @@ public function __construct($paths = array()) } /** - * Returns a full path for a given file name. - * - * @param mixed $name The file name to locate - * @param string $currentPath The current path - * @param bool $first Whether to return the first occurrence or an array of filenames - * - * @return string|array The full path to the file|An array of file paths - * - * @throws \InvalidArgumentException When file is not found + * {@inheritdoc} */ public function locate($name, $currentPath = null, $first = true) { + if ('' == $name) { + throw new \InvalidArgumentException('An empty file name is not valid to be located.'); + } + if ($this->isAbsolutePath($name)) { if (!file_exists($name)) { throw new \InvalidArgumentException(sprintf('The file "%s" does not exist.', $name)); @@ -84,10 +80,10 @@ public function locate($name, $currentPath = null, $first = true) */ private function isAbsolutePath($file) { - if ($file[0] == '/' || $file[0] == '\\' + if ($file[0] === '/' || $file[0] === '\\' || (strlen($file) > 3 && ctype_alpha($file[0]) - && $file[1] == ':' - && ($file[2] == '\\' || $file[2] == '/') + && $file[1] === ':' + && ($file[2] === '\\' || $file[2] === '/') ) || null !== parse_url($file, PHP_URL_SCHEME) ) { diff --git a/src/Symfony/Component/Config/FileLocatorInterface.php b/src/Symfony/Component/Config/FileLocatorInterface.php index 4287e3d1d0d3b..2ba07dfd2fd75 100644 --- a/src/Symfony/Component/Config/FileLocatorInterface.php +++ b/src/Symfony/Component/Config/FileLocatorInterface.php @@ -19,11 +19,11 @@ interface FileLocatorInterface /** * Returns a full path for a given file name. * - * @param mixed $name The file name to locate - * @param string $currentPath The current path - * @param bool $first Whether to return the first occurrence or an array of filenames + * @param mixed $name The file name to locate + * @param string|null $currentPath The current path + * @param bool $first Whether to return the first occurrence or an array of filenames * - * @return string|array The full path to the file|An array of file paths + * @return string|array The full path to the file or an array of file paths * * @throws \InvalidArgumentException When file is not found */ diff --git a/src/Symfony/Component/Config/Loader/DelegatingLoader.php b/src/Symfony/Component/Config/Loader/DelegatingLoader.php index fa81311422e30..3097878bf0bf2 100644 --- a/src/Symfony/Component/Config/Loader/DelegatingLoader.php +++ b/src/Symfony/Component/Config/Loader/DelegatingLoader.php @@ -34,14 +34,7 @@ public function __construct(LoaderResolverInterface $resolver) } /** - * Loads a resource. - * - * @param mixed $resource A resource - * @param string $type The resource type - * - * @return mixed - * - * @throws FileLoaderLoadException if no loader is found. + * {@inheritdoc} */ public function load($resource, $type = null) { diff --git a/src/Symfony/Component/Config/Loader/FileLoader.php b/src/Symfony/Component/Config/Loader/FileLoader.php index 981d16f92bacf..b76390bcbb518 100644 --- a/src/Symfony/Component/Config/Loader/FileLoader.php +++ b/src/Symfony/Component/Config/Loader/FileLoader.php @@ -22,8 +22,14 @@ */ abstract class FileLoader extends Loader { + /** + * @var array + */ protected static $loading = array(); + /** + * @var FileLocatorInterface + */ protected $locator; private $currentDir; @@ -38,11 +44,21 @@ public function __construct(FileLocatorInterface $locator) $this->locator = $locator; } + /** + * Sets the current directory. + * + * @param string $dir + */ public function setCurrentDir($dir) { $this->currentDir = $dir; } + /** + * Returns the file locator used by this loader. + * + * @return FileLocatorInterface + */ public function getLocator() { return $this->locator; @@ -51,10 +67,10 @@ public function getLocator() /** * Imports a resource. * - * @param mixed $resource A Resource - * @param string $type The resource type - * @param bool $ignoreErrors Whether to ignore import errors or not - * @param string $sourceResource The original resource importing the new resource + * @param mixed $resource A Resource + * @param string|null $type The resource type or null if unknown + * @param bool $ignoreErrors Whether to ignore import errors or not + * @param string|null $sourceResource The original resource importing the new resource * * @return mixed * diff --git a/src/Symfony/Component/Config/Loader/Loader.php b/src/Symfony/Component/Config/Loader/Loader.php index 705a6a78e9565..de4e127386d8b 100644 --- a/src/Symfony/Component/Config/Loader/Loader.php +++ b/src/Symfony/Component/Config/Loader/Loader.php @@ -23,9 +23,7 @@ abstract class Loader implements LoaderInterface protected $resolver; /** - * Gets the loader resolver. - * - * @return LoaderResolverInterface A LoaderResolverInterface instance + * {@inheritdoc} */ public function getResolver() { @@ -33,9 +31,7 @@ public function getResolver() } /** - * Sets the loader resolver. - * - * @param LoaderResolverInterface $resolver A LoaderResolverInterface instance + * {@inheritdoc} */ public function setResolver(LoaderResolverInterface $resolver) { @@ -45,8 +41,8 @@ public function setResolver(LoaderResolverInterface $resolver) /** * Imports a resource. * - * @param mixed $resource A Resource - * @param string $type The resource type + * @param mixed $resource A resource + * @param string|null $type The resource type or null if unknown * * @return mixed */ @@ -58,12 +54,12 @@ public function import($resource, $type = null) /** * Finds a loader able to load an imported resource. * - * @param mixed $resource A Resource - * @param string $type The resource type + * @param mixed $resource A resource + * @param string|null $type The resource type or null if unknown * * @return LoaderInterface A LoaderInterface instance * - * @throws FileLoaderLoadException if no loader is found + * @throws FileLoaderLoadException If no loader is found */ public function resolve($resource, $type = null) { diff --git a/src/Symfony/Component/Config/Loader/LoaderInterface.php b/src/Symfony/Component/Config/Loader/LoaderInterface.php index 52d5981e8ea69..969ba125ac735 100644 --- a/src/Symfony/Component/Config/Loader/LoaderInterface.php +++ b/src/Symfony/Component/Config/Loader/LoaderInterface.php @@ -11,6 +11,8 @@ namespace Symfony\Component\Config\Loader; +use Symfony\Component\Config\Exception\FileLoaderLoadException; + /** * LoaderInterface is the interface implemented by all loader classes. * @@ -21,18 +23,20 @@ interface LoaderInterface /** * Loads a resource. * - * @param mixed $resource The resource - * @param string $type The resource type + * @param mixed $resource The resource + * @param string|null $type The resource type or null if unknown + * + * @throws FileLoaderLoadException If something went wrong */ public function load($resource, $type = null); /** - * Returns true if this class supports the given resource. + * Returns whether this class supports the given resource. * - * @param mixed $resource A resource - * @param string $type The resource type + * @param mixed $resource A resource + * @param string|null $type The resource type or null if unknown * - * @return bool true if this class supports the given resource, false otherwise + * @return bool True if this class supports the given resource, false otherwise */ public function supports($resource, $type = null); diff --git a/src/Symfony/Component/Config/Loader/LoaderResolver.php b/src/Symfony/Component/Config/Loader/LoaderResolver.php index 2340fe07f8869..e547e8a1d34a1 100644 --- a/src/Symfony/Component/Config/Loader/LoaderResolver.php +++ b/src/Symfony/Component/Config/Loader/LoaderResolver.php @@ -40,12 +40,7 @@ public function __construct(array $loaders = array()) } /** - * Returns a loader able to load the resource. - * - * @param mixed $resource A resource - * @param string $type The resource type - * - * @return LoaderInterface|false A LoaderInterface instance + * {@inheritdoc} */ public function resolve($resource, $type = null) { diff --git a/src/Symfony/Component/Config/Loader/LoaderResolverInterface.php b/src/Symfony/Component/Config/Loader/LoaderResolverInterface.php index 57d878152ab54..40f1a1a63f295 100644 --- a/src/Symfony/Component/Config/Loader/LoaderResolverInterface.php +++ b/src/Symfony/Component/Config/Loader/LoaderResolverInterface.php @@ -21,10 +21,10 @@ interface LoaderResolverInterface /** * Returns a loader able to load the resource. * - * @param mixed $resource A resource - * @param string $type The resource type + * @param mixed $resource A resource + * @param string|null $type The resource type or null if unknown * - * @return LoaderInterface A LoaderInterface instance + * @return LoaderInterface|false The loader or false if none is able to load the resource */ public function resolve($resource, $type = null); } diff --git a/src/Symfony/Component/Config/Resource/DirectoryResource.php b/src/Symfony/Component/Config/Resource/DirectoryResource.php index a9e4d76143918..f15b81a311c9c 100644 --- a/src/Symfony/Component/Config/Resource/DirectoryResource.php +++ b/src/Symfony/Component/Config/Resource/DirectoryResource.php @@ -24,8 +24,8 @@ class DirectoryResource implements ResourceInterface, \Serializable /** * Constructor. * - * @param string $resource The file path to the resource - * @param string $pattern A pattern to restrict monitored files + * @param string $resource The file path to the resource + * @param string|null $pattern A pattern to restrict monitored files */ public function __construct($resource, $pattern = null) { @@ -34,9 +34,7 @@ public function __construct($resource, $pattern = null) } /** - * Returns a string representation of the Resource. - * - * @return string A string representation of the Resource + * {@inheritdoc} */ public function __toString() { @@ -44,26 +42,25 @@ public function __toString() } /** - * Returns the resource tied to this Resource. - * - * @return mixed The resource + * {@inheritdoc} */ public function getResource() { return $this->resource; } + /** + * Returns the pattern to restrict monitored files + * + * @return string|null + */ public function getPattern() { return $this->pattern; } /** - * Returns true if the resource has not been updated since the given timestamp. - * - * @param int $timestamp The last time the resource was loaded - * - * @return bool true if the resource has not been updated, false otherwise + * {@inheritdoc} */ public function isFresh($timestamp) { diff --git a/src/Symfony/Component/Config/Resource/FileResource.php b/src/Symfony/Component/Config/Resource/FileResource.php index 5cb4bc7078ef3..b828e7d37f669 100644 --- a/src/Symfony/Component/Config/Resource/FileResource.php +++ b/src/Symfony/Component/Config/Resource/FileResource.php @@ -20,6 +20,9 @@ */ class FileResource implements ResourceInterface, \Serializable { + /** + * @var string|false + */ private $resource; /** @@ -33,9 +36,7 @@ public function __construct($resource) } /** - * Returns a string representation of the Resource. - * - * @return string A string representation of the Resource + * {@inheritdoc} */ public function __toString() { @@ -43,9 +44,7 @@ public function __toString() } /** - * Returns the resource tied to this Resource. - * - * @return mixed The resource + * {@inheritdoc} */ public function getResource() { @@ -53,15 +52,11 @@ public function getResource() } /** - * Returns true if the resource has not been updated since the given timestamp. - * - * @param int $timestamp The last time the resource was loaded - * - * @return bool true if the resource has not been updated, false otherwise + * {@inheritdoc} */ public function isFresh($timestamp) { - if (!file_exists($this->resource)) { + if (false === $this->resource || !file_exists($this->resource)) { return false; } diff --git a/src/Symfony/Component/Config/Resource/ResourceInterface.php b/src/Symfony/Component/Config/Resource/ResourceInterface.php index c0ea9ed7b46d8..db03d127a401e 100644 --- a/src/Symfony/Component/Config/Resource/ResourceInterface.php +++ b/src/Symfony/Component/Config/Resource/ResourceInterface.php @@ -28,14 +28,14 @@ public function __toString(); /** * Returns true if the resource has not been updated since the given timestamp. * - * @param int $timestamp The last time the resource was loaded + * @param int $timestamp The last time the resource was loaded * - * @return bool true if the resource has not been updated, false otherwise + * @return bool True if the resource has not been updated, false otherwise */ public function isFresh($timestamp); /** - * Returns the resource tied to this Resource. + * Returns the tied resource. * * @return mixed The resource */ diff --git a/src/Symfony/Component/Config/Tests/FileLocatorTest.php b/src/Symfony/Component/Config/Tests/FileLocatorTest.php index 8e8f442f5e6a5..d479f2569f1fe 100644 --- a/src/Symfony/Component/Config/Tests/FileLocatorTest.php +++ b/src/Symfony/Component/Config/Tests/FileLocatorTest.php @@ -87,6 +87,7 @@ public function testLocate() /** * @expectedException \InvalidArgumentException + * @expectedExceptionMessage The file "foobar.xml" does not exist */ public function testLocateThrowsAnExceptionIfTheFileDoesNotExists() { @@ -104,4 +105,15 @@ public function testLocateThrowsAnExceptionIfTheFileDoesNotExistsInAbsolutePath( $loader->locate(__DIR__.'/Fixtures/foobar.xml', __DIR__); } + + /** + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage An empty file name is not valid to be located. + */ + public function testLocateEmpty() + { + $loader = new FileLocator(array(__DIR__.'/Fixtures')); + + $loader->locate(null, __DIR__); + } }