[dev] Empty <configsection>'s
Jan Schneider
jan at horde.org
Mon Feb 23 00:38:17 PST 2004
Zitat von Jon Parise <jon at horde.org>:
> I ran into an interesting problem with Horde_Config and empty
> <configsection>'s today. I don't know this code too well so I'm
> soliciting possible solutions here.
>
> Take the case of the 'syslog' log handler. Its entry in conf.xml
> looks like this:
>
> <case name="syslog" desc="Syslog">
> <configphp name="name" quote="false" desc="Syslog facility to use"/>
> </case>
>
> Note that, unlike the other log handlers, it takes no parameters.
> Unfortunately, we have a handful of code (in Horde and in the Log
> package) that assumes at we at least pass an empty array as the
> factory's $params argument. Right now, though, the Horde_Config code
> won't write any '$conf['log']['params']' entries if 'syslog' is
> selected.
>
> I started by making the "empty params" requirement explicit by
> changing the 'syslog' entry in conf.xml to this:
>
> <case name="syslog" desc="Syslog">
> <configphp name="name" quote="false" desc="Syslog facility to use"/>
> <configsection name="params">
> </configsection>
> </case>
>
> This still won't output any '$conf['log']['params']' entries, however.
>
> Next, I modified Horde/Config.php thusly:
>
> --- Config.php 2 Feb 2004 22:50:36 -0000 1.56
> +++ Config.php 23 Feb 2004 02:49:18 -0000
> @@ -260,6 +260,8 @@
> }
> break;
> }
> + } elseif (is_array($configitem) && empty($configitem)) {
> + $value = 'array()';
> } else {
> $this->_generatePHPConfig($configitem,
> $prefixedname, $formvars);
> }
>
> This produced the desired result ("$conf['log']['params'] = array();"
> in the resulting output), but I'm not sure this fits with the spirit
> of the surrounding code.
>
> Alternate solutions:
>
> 1. Introduce a <configparams> entity. It will always write an
> 'array()' entry to the configuration output. This will generally
> be redundant when real parameters are also written, but it's
> technically correct and will always work.
>
> 2. Assume all <configsection> sections map directly to an array of
> subelements. Give them a '_type' of 'array' and add the
> associated machinery to Horde_Config.
>
> (This is a more generalized version of solution 1.)
>
> Opinions, please.
2. sounds like the "correct" solution to me.
Jan.
--
http://www.horde.org - The Horde Project
http://www.ammma.de - Neue Wege des Lernens
http://www.tip4all.de - Deine private Tippgemeinschaft
More information about the dev
mailing list