diff --git a/src/Symfony/Component/DependencyInjection/Loader/FileLoader.php b/src/Symfony/Component/DependencyInjection/Loader/FileLoader.php
index a7a1ac070e..da3dd9b6ac 100644
--- a/src/Symfony/Component/DependencyInjection/Loader/FileLoader.php
+++ b/src/Symfony/Component/DependencyInjection/Loader/FileLoader.php
@@ -45,15 +45,21 @@ abstract class FileLoader extends Loader
*
* @param mixed $resource A Resource
*/
- public function import($resource)
+ public function import($resource, $ignoreErrors = false)
{
- $loader = $this->resolve($resource);
+ try {
+ $loader = $this->resolve($resource);
- if ($loader instanceof FileLoader && null !== $this->currentDir) {
- $resource = $this->getAbsolutePath($resource, $this->currentDir);
+ if ($loader instanceof FileLoader && null !== $this->currentDir) {
+ $resource = $this->getAbsolutePath($resource, $this->currentDir);
+ }
+
+ $loader->load($resource);
+ } catch (\Exception $e) {
+ if (!$ignoreErrors) {
+ throw $e;
+ }
}
-
- $loader->load($resource);
}
/**
diff --git a/src/Symfony/Component/DependencyInjection/Loader/XmlFileLoader.php b/src/Symfony/Component/DependencyInjection/Loader/XmlFileLoader.php
index 5c7ddc4f38..9bbf0cf435 100644
--- a/src/Symfony/Component/DependencyInjection/Loader/XmlFileLoader.php
+++ b/src/Symfony/Component/DependencyInjection/Loader/XmlFileLoader.php
@@ -82,7 +82,7 @@ class XmlFileLoader extends FileLoader
foreach ($xml->imports->import as $import) {
$this->currentDir = dirname($file);
- $this->import((string) $import['resource']);
+ $this->import((string) $import['resource'], (Boolean) $import->getAttributeAsPhp('ignore-errors'));
}
}
diff --git a/src/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php b/src/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php
index e94fb1b830..7132f4dfc5 100644
--- a/src/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php
+++ b/src/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php
@@ -81,7 +81,7 @@ class YamlFileLoader extends FileLoader
foreach ($content['imports'] as $import) {
$this->currentDir = dirname($file);
- $this->import($import['resource']);
+ $this->import($import['resource'], isset($import['ignore_errors']) ? (Boolean) $import['ignore_errors'] : false);
}
}
diff --git a/src/Symfony/Component/DependencyInjection/Loader/schema/dic/services/services-1.0.xsd b/src/Symfony/Component/DependencyInjection/Loader/schema/dic/services/services-1.0.xsd
index c1fcf6c611..2a9d3f690b 100644
--- a/src/Symfony/Component/DependencyInjection/Loader/schema/dic/services/services-1.0.xsd
+++ b/src/Symfony/Component/DependencyInjection/Loader/schema/dic/services/services-1.0.xsd
@@ -61,13 +61,7 @@
]]>
-
-
-
-
-
+
diff --git a/tests/Symfony/Tests/Component/DependencyInjection/Fixtures/xml/services4.xml b/tests/Symfony/Tests/Component/DependencyInjection/Fixtures/xml/services4.xml
index de88efc6c3..9ebf6d7aaf 100644
--- a/tests/Symfony/Tests/Component/DependencyInjection/Fixtures/xml/services4.xml
+++ b/tests/Symfony/Tests/Component/DependencyInjection/Fixtures/xml/services4.xml
@@ -6,7 +6,7 @@
-
+