[DependencyInjection] added a way to ignore errors when importing a non-existent file (useful when you want to include an optional service file)
This commit is contained in:
parent
b1e79963b1
commit
a432417ab9
@ -45,8 +45,9 @@ abstract class FileLoader extends Loader
|
|||||||
*
|
*
|
||||||
* @param mixed $resource A Resource
|
* @param mixed $resource A Resource
|
||||||
*/
|
*/
|
||||||
public function import($resource)
|
public function import($resource, $ignoreErrors = false)
|
||||||
{
|
{
|
||||||
|
try {
|
||||||
$loader = $this->resolve($resource);
|
$loader = $this->resolve($resource);
|
||||||
|
|
||||||
if ($loader instanceof FileLoader && null !== $this->currentDir) {
|
if ($loader instanceof FileLoader && null !== $this->currentDir) {
|
||||||
@ -54,6 +55,11 @@ abstract class FileLoader extends Loader
|
|||||||
}
|
}
|
||||||
|
|
||||||
$loader->load($resource);
|
$loader->load($resource);
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
if (!$ignoreErrors) {
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -82,7 +82,7 @@ class XmlFileLoader extends FileLoader
|
|||||||
|
|
||||||
foreach ($xml->imports->import as $import) {
|
foreach ($xml->imports->import as $import) {
|
||||||
$this->currentDir = dirname($file);
|
$this->currentDir = dirname($file);
|
||||||
$this->import((string) $import['resource']);
|
$this->import((string) $import['resource'], (Boolean) $import->getAttributeAsPhp('ignore-errors'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,7 +81,7 @@ class YamlFileLoader extends FileLoader
|
|||||||
|
|
||||||
foreach ($content['imports'] as $import) {
|
foreach ($content['imports'] as $import) {
|
||||||
$this->currentDir = dirname($file);
|
$this->currentDir = dirname($file);
|
||||||
$this->import($import['resource']);
|
$this->import($import['resource'], isset($import['ignore_errors']) ? (Boolean) $import['ignore_errors'] : false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,13 +61,7 @@
|
|||||||
]]></xsd:documentation>
|
]]></xsd:documentation>
|
||||||
</xsd:annotation>
|
</xsd:annotation>
|
||||||
<xsd:attribute name="resource" type="xsd:string" use="required" />
|
<xsd:attribute name="resource" type="xsd:string" use="required" />
|
||||||
<xsd:attribute name="class" type="xsd:string">
|
<xsd:attribute name="ignore-errors" type="boolean" />
|
||||||
<xsd:annotation>
|
|
||||||
<xsd:documentation><![CDATA[
|
|
||||||
The PHP class able to load the resource. If not defined, the loader uses the current loader.
|
|
||||||
]]></xsd:documentation>
|
|
||||||
</xsd:annotation>
|
|
||||||
</xsd:attribute>
|
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
|
|
||||||
<xsd:complexType name="configurator">
|
<xsd:complexType name="configurator">
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
<imports>
|
<imports>
|
||||||
<import resource="services2.xml" />
|
<import resource="services2.xml" />
|
||||||
<import resource="services3.xml" />
|
<import resource="services3.xml" />
|
||||||
<import resource="../ini/parameters.ini" class="Symfony\Component\DependencyInjection\Loader\IniFileLoader" />
|
<import resource="../ini/parameters.ini" />
|
||||||
<import resource="../ini/parameters2.ini" />
|
<import resource="../ini/parameters2.ini" />
|
||||||
<import resource="../yaml/services13.yml" />
|
<import resource="../yaml/services13.yml" />
|
||||||
</imports>
|
</imports>
|
||||||
|
Reference in New Issue
Block a user