ZF-6679: Items configured from Zend_Application::setOptions() via a config entry do not have their keys cast to lower case

Description

The ability to have one application.ini file source another one via the config directive is working fine with proper merging now as of Zend Framework 1.8.1.

However, config file referenced via the config directive do not have their array keys cast to lower case, which is the first thing setOptions does with the config file that contains the config directive (I know this sounds confusing, but I have a patch against the subversion repository that fixes this). If you have the following scenario:

ini #1

config = "ini #2"
includePaths.path1 = "some/path"

ini #2

includePaths.path2= "another/path"

One would expect the resulting array to be something like:

array(
    'config' => 'ini #2',
    'includepaths' => array(
        'path1' => 'some/path',
        'path2' => 'another/path'
    )
)

In actuality, however, what you end up with is:

array(
    'config' => 'ini #2',
    'includepaths' => array(
        'path1' => 'some/path',
    ),
    'includePaths' => array(
        'path2' => 'another/path'
    )
)

I have a simple fix for this issue that I will post to this issue once I figure out the best way to attach patches to an issue (this is the first issue that I've filed in the Zend Framework Issue Tracker, and I'm not too familiar with the JIRA Issue Tracker software).

Comments

Updated description formatting after getting more familiar with JIRA Text Formatting options.

This patch is against http://framework.zend.com/svn/framework/…, revision 15595.

Linking ZF-6459 as a related issue. ZF-6459 fixed the deep merging issue to make it possible to use the config option, but without the keys from the referenced config file cast to lower case, in order for the deep merge to work, the top-level keys in a referenced config file must all be in lower case.

set component and Tags.

Fixed in trunk and 1.9 release branch. Basically, the options are no longer being stored with flattened keys, but we are still allowing lookups using flattened keys -- but passing case sensitive keys will also now work.