There are common APIs to access configuration across different parts of Drupal:
1. FormBase::config() proxies your call to the configuration factory.
2. ConfigFormBase::config() does the same but ...
The behaviour is very different. ConfigFormBase::config() will disable all overrides with the assumption that you deal with a configuration form to display and save non-overriden configuration. The original behavior of FormBase::config() is overriden, so there is no direct way to access configuration with all overrides applied.
Let's say you have an admin form that sends an email when a setting is updated. It sends to the site email address. You override that of course in $global['conf']['system.site']['mail'] = 'firstname.lastname@example.org'; so your customer will not get the emails from your developer site. You don't want this local override to get into the active configuration so that it is not applied when you edit admin settings is good. However in the form that sends email, it will also not be applied for sending the email. So pooof, you sent emails to your customer even though there is nothing evident in your code, that the config() method that in the other class applied overrides did not apply overrides in this class.
This is an example that some people mentioned, but I suspect there are probably other examples that I did not think of yet.
A. Make global overrides apply all the time. This would make local dev overrides end up in active configuration so not sure developers want to need to review those changes all the time?
B. Make the API explicit about which config methods return possibly overriden values and which return raw original values all the time. (Note that this may have side effects for how we solve entity listings, see ).
C. Decide this is not a big problem. We are not concerned with dev environment emails from admin forms and other possible side effects that may come.
User interface changes
|#84||1934152-live-vs-raw-config-84.patch||29.64 KB||Gábor Hojtsy|
PASSED: [[SimpleTest]]: [PHP 5.4 MySQL] 79,489 pass(es).
|#84||interdiff.txt||657 bytes||Gábor Hojtsy|
|#83||1934152-live-vs-raw-config-83.patch||29.64 KB||Gábor Hojtsy|
PASSED: [[SimpleTest]]: [PHP 5.4 MySQL] 79,517 pass(es).
|#82||1934152-live-vs-raw-config-82.patch||53.48 KB||Gábor Hojtsy|
PASSED: [[SimpleTest]]: [PHP 5.4 MySQL] 79,500 pass(es).
FAILED: [[SimpleTest]]: [PHP 5.4 MySQL] 78,459 pass(es), 254 fail(s), and 64 exception(s).