Problem/Motivation

The module_load_include() function provides little or no advantage over calling simpler functions directly. In #599122, several calls to require(DRUPAL_ROOT . 'file') were changed to use module_load_include() for consistency. This broke core, so after the changes were reverted, webchick commented in #599122-15:

I guess we should look at removing this stupid, confusing, and useless function in Drupal 8.

Proposed resolution

The module_load_include() function should be deprecated, and its use removed from core.

Remaining tasks

A patch to deprecate the module_load_include() function and remove its usage from core has been submitted. After discussion and review,

Either:

The patch should be committed, and an API change notification added.

Or:

This issue should be marked closed (won't fix).

User interface changes

None

API changes

The module_load_include() would be deprecated, and possibly removed from future versions of Drupal.

Original report by scor

This is a follow up issue on Drupal 7's #599122: Do not use module_load_include() in global context. This function is misleading and useless in some cases like in an .install file or in "global context" where a native PHP require_once call must be used instead.

CommentFileSizeAuthor
#79 interdiff-77-79.txt5.96 KBMerryHamster
#79 697946-79.patch29.82 KBMerryHamster
#77 697946-77.patch30.31 KBharsha012
#68 remove_or_fix_confusing-697946-68.patch26.45 KBpguillard
#64 interdiff-697946-62-64.txt21.41 KBpguillard
#64 remove_or_fix_confusing-697946-64.patch26.45 KBpguillard
#62 interdiff-697946-55-62.txt21.63 KBpguillard
#62 remove_or_fix_confusing-697946-62.patch26.56 KBpguillard
#56 interdiff-697946-53-55.txt21.43 KBpguillard
#55 interdiff-697946-53-55.patch21.43 KBpguillard
#55 remove_or_fix_confusing-697946-55.patch26.73 KBpguillard
#53 remove_or_fix_confusing-697946-53.patch24.65 KBpguillard
#49 interdiff.txt550 bytesvaibhavjain
#48 remove_or_fix_confusing-697946-48.patch25.29 KBvaibhavjain
PASSED: [[SimpleTest]]: [PHP 5.5 MySQL] 98,768 pass(es). View
#44 interdiff.patch1.22 KBvaibhavjain
FAILED: [[SimpleTest]]: [PHP 5.5 MySQL] Unable to apply patch interdiff_43.patch. Unable to apply patch. See the log in the details link for more information. View
#42 remove_or_fix_confusing-697946-42.patch25.29 KBvaibhavjain
PASSED: [[SimpleTest]]: [PHP 5.5 MySQL] 98,454 pass(es). View
#38 remove_or_fix_confusing-697946-38.patch25.38 KBvaibhavjain
PASSED: [[SimpleTest]]: [PHP 5.5 MySQL] 98,282 pass(es). View
#35 interdiff.txt237 bytesalansaviolobo
#35 remove_or_fix_confusing-697946-35.patch28.48 KBalansaviolobo
PASSED: [[SimpleTest]]: [PHP 5.4 MySQL] 75,684 pass(es). View
#33 interdiff.txt658 bytesalansaviolobo
#33 remove_or_fix_confusing-697946-33.patch28.48 KBalansaviolobo
FAILED: [[SimpleTest]]: [PHP 5.4 MySQL] 75,674 pass(es), 3 fail(s), and 9 exception(s). View
#31 interdiff.txt1.89 KBalansaviolobo
#31 remove_or_fix_confusing-697946-31.patch28.46 KBalansaviolobo
FAILED: [[SimpleTest]]: [PHP 5.4 MySQL] 75,470 pass(es), 183 fail(s), and 205 exception(s). View
#29 interdiff.txt3.14 KBalansaviolobo
#29 remove_or_fix_confusing-697946-29.patch28.4 KBalansaviolobo
FAILED: [[SimpleTest]]: [PHP 5.4 MySQL] 75,188 pass(es), 217 fail(s), and 204 exception(s). View
#27 remove_or_fix_confusing-697946-27.patch28.3 KBalansaviolobo
FAILED: [[SimpleTest]]: [PHP 5.4 MySQL] Failed to run tests: PHP Fatal error encountered during run_tests.sh. See review log for details.. View
#15 deprecate-module_load_include-697946-15.patch26.24 KBpillarsdotnet
FAILED: [[SimpleTest]]: [PHP 5.4 MySQL] Unable to apply patch deprecate-module_load_include-697946-15.patch. Unable to apply patch. See the log in the details link for more information. View
#12 deprecate-module_load_include-697946-12.patch26.24 KBpillarsdotnet
FAILED: [[SimpleTest]]: [MySQL] Invalid PHP syntax in modules/image/image.test. View
#10 deprecate-module_load_include-697946-10.patch26.24 KBpillarsdotnet
FAILED: [[SimpleTest]]: [MySQL] Invalid PHP syntax in modules/forum/forum.admin.inc. View
#8 deprecate-module_load_include-697946-8.patch26.22 KBpillarsdotnet
FAILED: [[SimpleTest]]: [MySQL] 33,237 pass(es), 17 fail(s), and 29 exception(es). View
#6 deprecate-module_load_include-697946-5.patch26.23 KBpillarsdotnet
FAILED: [[SimpleTest]]: [MySQL] 33,219 pass(es), 30 fail(s), and 254 exception(es). View
#4 deprecate-module_load_include-697946-4.patch26.15 KBpillarsdotnet
FAILED: [[SimpleTest]]: [MySQL] Drupal installation failed. View
#1 deprecate-module_load_include-697946-1.patch26.12 KBpillarsdotnet
FAILED: [[SimpleTest]]: [MySQL] Drupal installation failed. View
Members fund testing for the Drupal project. Drupal Association Learn more

Comments

pillarsdotnet’s picture

FileSize
26.12 KB
FAILED: [[SimpleTest]]: [MySQL] Drupal installation failed. View

Attached patch marks the module_load_include() function as deprecated and replaces it with a combination of require_once(), drupal_get_path(), and file_exists().

It may be worth investigating whether this change affects performance in any significant way.

Note that removing the function altogether would require changing the documentation (and perhaps the API) of the drupal_build_form() function:

 *     - files: An optional array defining include files that need to be loaded
 *       for building the form. Each array entry may be the path to a file or
 *       another array containing values for the parameters 'type', 'module' and
 *       'name' as needed by module_load_include(). The files listed here are
 *       automatically loaded by form_get_cache(). By default the current menu
 *       router item's 'file' definition is added, if any. Use
 *       form_load_include() to add include files from a form constructor.

The form_load_include() docs would likewise need to be modified:

 * Use this function instead of module_load_include() from inside a form
 * constructor or any form processing logic as it ensures that the include file
 * is loaded whenever the form is processed. In contrast to using
 * module_load_include() directly, form_load_include() makes sure the include
 * file is correctly loaded also if the form is cached.
pillarsdotnet’s picture

Status: Active » Needs review

Status: Needs review » Needs work

The last submitted patch, deprecate-module_load_include-697946-1.patch, failed testing.

pillarsdotnet’s picture

Status: Needs work » Needs review
FileSize
26.15 KB
FAILED: [[SimpleTest]]: [MySQL] Drupal installation failed. View

Trying again. using include_once() instead of require_once().

Status: Needs review » Needs work

The last submitted patch, deprecate-module_load_include-697946-4.patch, failed testing.

pillarsdotnet’s picture

Status: Needs work » Needs review
FileSize
26.23 KB
FAILED: [[SimpleTest]]: [MySQL] 33,219 pass(es), 30 fail(s), and 254 exception(es). View

Needed another if (file_exists(...)).

Status: Needs review » Needs work

The last submitted patch, deprecate-module_load_include-697946-5.patch, failed testing.

pillarsdotnet’s picture

Status: Needs work » Needs review
FileSize
26.22 KB
FAILED: [[SimpleTest]]: [MySQL] 33,237 pass(es), 17 fail(s), and 29 exception(es). View

Trying again...

Status: Needs review » Needs work

The last submitted patch, deprecate-module_load_include-697946-8.patch, failed testing.

pillarsdotnet’s picture

Status: Needs work » Needs review
FileSize
26.24 KB
FAILED: [[SimpleTest]]: [MySQL] Invalid PHP syntax in modules/forum/forum.admin.inc. View

And again...

Status: Needs review » Needs work

The last submitted patch, deprecate-module_load_include-697946-10.patch, failed testing.

pillarsdotnet’s picture

Status: Needs work » Needs review
FileSize
26.24 KB
FAILED: [[SimpleTest]]: [MySQL] Invalid PHP syntax in modules/image/image.test. View

And again...

Status: Needs review » Needs work

The last submitted patch, deprecate-module_load_include-697946-12.patch, failed testing.

The last submitted patch, deprecate-module_load_include-697946-12.patch, failed testing.

pillarsdotnet’s picture

FileSize
26.24 KB
FAILED: [[SimpleTest]]: [PHP 5.4 MySQL] Unable to apply patch deprecate-module_load_include-697946-15.patch. Unable to apply patch. See the log in the details link for more information. View

(sigh)

EDIT: Yay!

<img src="http://drupal.org/files/happydance.gif" />
EDIT: Okay, enough celebration.

moshe weitzman’s picture

Status: Needs work » Needs review

The Summary does not justify this change well. I don't yet understand the problem we are solving. Lots of functions fail if used at wrong time.

pillarsdotnet’s picture

Updated issue summary.

moshe weitzman’s picture

I prefer to centralize including code where feasible so that you can breakpoint and understand when code is being loaded from disk. The Summary is much better now but I guess I disagree. It is possible that module_load_include() should be broken up into different functions but not removed. my .02

pillarsdotnet’s picture

It is possible that module_load_include() should be broken up into different functions but not removed.

If you have any specific suggestions as to how it should be broken up (or "fixed"), I would be happy to roll a patch.

donquixote’s picture

I have one specific suggestion.
module_load_include() really helps if you have a file of the pattern "$module.something.inc".
However, if you have sth like "theme/theme.inc" in views module, then you need a stupid third argument.

A simple suggestion: Allow value of FALSE for the third argument.

function module_load_include($suffix, $module, $prefix = NULL) {
  if (!isset($prefix)) {
    $prefix = $module . '.';
  }
  elseif ($name === FALSE) {
    $prefix = '';
  }
  else {
    $prefix = '.';
  }

  if (function_exists('drupal_get_path')) {
    $file = DRUPAL_ROOT . '/' . drupal_get_path('module', $module) . '/' . $prefix . $suffix;
    if (is_file($file)) {
      require_once $file;
      return $file;
    }
  }
  return FALSE;
}

Expected usage:

// views module, "views.install"
module_load_include('install', 'views');

// views module, "theme/theme.inc"
module_load_include('theme/theme.inc', 'views', FALSE);

// instead of old-style, confusing
module_load_include('inc', 'views', 'theme/theme');

This quite a cheap gain.
We could also make up variations of this, where the difference to D7 would be bigger, but that might feel more sane.

----------

Of course, all of this would be only for procedural code. Anything OOP should be included with autoloading, esp. the Drupal 8 PSR0 stuff.

donquixote’s picture

alexweber’s picture

Personally, I really don't think there's any point in removing this function. It's ridiculously small and simple and basically just abstracts some logic like resolving file location relative to drupal root and checking whether the file exists. IMO if we don't have a function like this we're basically gonna have the same repetitive code all over the place to achieve this.

That said, I think merging this and module_load_install() and possibly renaming it to just module_load() and clearing up parameters as suggested in #20 sounds like it could be a good thing.

Pasqualle’s picture

suggestion in #20 is not less confusing than the original function.

ctools_include() or my suggestion #1366026: replace module_load_include() with module_include() is much more usable.

Pasqualle’s picture

Issue summary: View changes

Update using Issue summary template.

areke’s picture

Issue summary: View changes
Status: Needs review » Needs work
Issue tags: +Needs reroll

The proposed patch is extremely old and needs a reroll. It looks like there are still quite a few usages of module_load_include() in 8.x.

alansaviolobo’s picture

Status: Needs work » Needs review

Status: Needs review » Needs work

The last submitted patch, 15: deprecate-module_load_include-697946-15.patch, failed testing.

alansaviolobo’s picture

Status: Needs work » Needs review
FileSize
28.3 KB
FAILED: [[SimpleTest]]: [PHP 5.4 MySQL] Failed to run tests: PHP Fatal error encountered during run_tests.sh. See review log for details.. View

Status: Needs review » Needs work

The last submitted patch, 27: remove_or_fix_confusing-697946-27.patch, failed testing.

alansaviolobo’s picture

Status: Needs work » Needs review
FileSize
28.4 KB
FAILED: [[SimpleTest]]: [PHP 5.4 MySQL] 75,188 pass(es), 217 fail(s), and 204 exception(s). View
3.14 KB

corrected invalid file names passed to include.

Status: Needs review » Needs work

The last submitted patch, 29: remove_or_fix_confusing-697946-29.patch, failed testing.

alansaviolobo’s picture

Status: Needs work » Needs review
FileSize
28.46 KB
FAILED: [[SimpleTest]]: [PHP 5.4 MySQL] 75,470 pass(es), 183 fail(s), and 205 exception(s). View
1.89 KB

Status: Needs review » Needs work

The last submitted patch, 31: remove_or_fix_confusing-697946-31.patch, failed testing.

alansaviolobo’s picture

Status: Needs work » Needs review
FileSize
28.48 KB
FAILED: [[SimpleTest]]: [PHP 5.4 MySQL] 75,674 pass(es), 3 fail(s), and 9 exception(s). View
658 bytes

Status: Needs review » Needs work

The last submitted patch, 33: remove_or_fix_confusing-697946-33.patch, failed testing.

alansaviolobo’s picture

Assigned: Unassigned » alansaviolobo
Status: Needs work » Needs review
FileSize
28.48 KB
PASSED: [[SimpleTest]]: [PHP 5.4 MySQL] 75,684 pass(es). View
237 bytes
pwieck’s picture

Issue tags: -Needs reroll
Mile23’s picture

Status: Needs review » Needs work
Issue tags: +@deprecated, +Needs reroll
Parent issue: » #599122: Do not use module_load_include() in global context

Needs a reroll, and:

+++ b/core/includes/module.inc
@@ -128,9 +133,11 @@ function module_load_install($module) {
  *
+ * @deprecated
+ *

Use a proper @deprecated, like:

 * @deprecated in Drupal 8.x, will be removed before Drupal 9.0.
 *   Use ......
vaibhavjain’s picture

Assigned: alansaviolobo » Unassigned
Status: Needs work » Needs review
FileSize
25.38 KB
PASSED: [[SimpleTest]]: [PHP 5.5 MySQL] 98,282 pass(es). View

Not sure if we should replace module_load_include with include_once.
I know about "loadInclude()" but it only works with enabled modules.
So, My query is, should we replace include_once with loadInclude() ? Or is there some thought behind using include_once ?

Attached the patch though.

jgeryk’s picture

Issue tags: -Needs reroll
legolasbo’s picture

Some nits

  1. +++ b/core/includes/install.core.inc
    @@ -1739,7 +1739,7 @@ function install_import_translations(&$install_state) {
    -    // for contrib modules happens in install_import_translations_remaining.
    +    // for contrib modules happens in install_finish_translations.
    

    This seems out of scope.

  2. +++ b/core/modules/locale/locale.module
    @@ -359,12 +359,13 @@ function locale_cron() {
    +<<<<<<< HEAD
    

    Left over from reroll?

legolasbo’s picture

Status: Needs review » Needs work
vaibhavjain’s picture

Status: Needs work » Needs review
FileSize
25.29 KB
PASSED: [[SimpleTest]]: [PHP 5.5 MySQL] 98,454 pass(es). View

For the above 2 issues pointed.
#1 - I have removed the comment.
#2 - Thats my bad, i should have reviewed the patch better.

legolasbo’s picture

@vaibhavjain,

If you can supply an interdiff that would make reviewing the patch a lot easier.

vaibhavjain’s picture

FileSize
1.22 KB
FAILED: [[SimpleTest]]: [PHP 5.5 MySQL] Unable to apply patch interdiff_43.patch. Unable to apply patch. See the log in the details link for more information. View

@legolasbo,
Yep, I should have added that.
Attached it now though.

Status: Needs review » Needs work

The last submitted patch, 44: interdiff.patch, failed testing.

legolasbo’s picture

Status: Needs work » Needs review

@vaibhavjain,

The testbot automatically tests any *.patch files. Next time, please upload interdiffs in the following format: [issuenumber]-[originalcomment]-[newcomment]-interdiff.txt in your case that would have been 697946-38-42-interdiff.txt

I'm leaving this needs review for now, because I haven't had the time to actually apply the patch and go over it.

Mile23’s picture

Status: Needs review » Needs work
  1. +++ b/core/includes/module.inc
    @@ -118,9 +123,12 @@ function module_load_install($module) {
      *
    - * @return
    + * @return bool
      *   The name of the included file, if successful; FALSE otherwise.
      *
    

    This should be @return string|bool

    https://www.drupal.org/coding-standards/docs#types

  2. +++ b/core/lib/Drupal/Core/Form/FormState.php
    @@ -47,12 +47,11 @@ class FormState implements FormStateInterface {
        *   - files: An optional array defining include files that need to be loaded
    -   *     for building the form. Each array entry may be the path to a file or
    -   *     another array containing values for the parameters 'type', 'module' and
    -   *     'name' as needed by module_load_include(). The files listed here are
    -   *     automatically loaded by \Drupal::formBuilder()->getCache(). By default
    -   *     the current menu router item's 'file' definition is added, if any. Use
    -   *     self::loadInclude() to add include files from a form constructor.
    +   *     for building the form. Each array entry may be the path to a file. The
    +   *     files listed here are automatically loaded by
    +   *     \Drupal::formBuilder()->getCache(). By default the current menu router
    +   *     item's 'file' definition is added, if any. Use self::loadInclude() to
    +   *     add include files from a form constructor.
        *   - form_id: Identification of the primary form being constructed and
    

    The original docs here mention sub-arrays. This info should be carried forward if it's still relevant. I couldn't find any discussion on this issue about it, so I don't know. I'm not familiar enough with how the FormState class works to know if the change is better.

vaibhavjain’s picture

FileSize
25.29 KB
PASSED: [[SimpleTest]]: [PHP 5.5 MySQL] 98,768 pass(es). View

Hey Mile23,
Not sure what is to be done for #2.
I am attaching the patch with #1 rectified.

vaibhavjain’s picture

FileSize
550 bytes

Interdiff.

vaibhavjain’s picture

Status: Needs work » Needs review

Updating status.

Mile23’s picture

Title: Remove or fix confusing module_load_include() » Deprecate module_load_include() for removal before Drupal 9.0.x
Version: 8.0.x-dev » 8.1.x-dev
Issue tags: +Needs reroll
Mile23’s picture

Status: Needs review » Needs work
pguillard’s picture

Status: Needs work » Needs review
FileSize
24.65 KB

#48 rerolled. Hope it is correct.

joelpittet’s picture

Status: Needs review » Needs work
Issue tags: -Needs reroll

THanks @pguillard that is a perfect reroll.

There are a couple more references in tests and comments that could be replaced as well.

core/includes/update.inc:238
core/modules/locale/src/Tests/LocaleUpdateDevelopmentReleaseTest.php:23
core/modules/system/src/Tests/Update/DbUpdatesTrait.php:56

Also, maybe a stupid question but why are we using include_once instead of the thing we are recommending to use which is \Drupal::moduleHandler()->loadInclude()?

And last, please don't use include_once as a function, it's a statement and there should be no parenthesis, this is a nitpick but we haven't used it like that in core yet so probably shouldn't start in this patch, the parens are superfluous.

pguillard’s picture

Thanks @joelpittet.

Here is the new patch applying your suggestions from #54.

I guess you are right concerning \Drupal::moduleHandler()->loadInclude(), but in doubt, I didn't replace it.

pguillard’s picture

FileSize
21.43 KB

Status: Needs review » Needs work

The last submitted patch, 55: interdiff-697946-53-55.patch, failed testing.

pguillard’s picture

Status: Needs work » Needs review
joelpittet’s picture

Thanks:) Hopefully someone else who worked on this or knows can confirm that.

tstoeckler’s picture

Status: Needs review » Needs work

Right, at the moment module_load_include() is deprecated in favor of ModuleHandler::loadInclude(). We could decide that since module's include files are on the decline we should deprecate ModuleHandler::loadInclude() as well, but then we should document that on the method.

Some further thoughts:
- Seeing that this is a 20KB patch it seems there is still a lot of usage of this, so maybe we should postpone this to when we have even less include files at some point in the D9 cycle.
- At least in classes (specifically: non-test classes) using ModuleHandler::loadInclude() is better than both module_load_include() and include_once drupal_get_path(...) ... because the ModuleHandler can be injected making the code testable. WizardPluginBase is one example I found in the patch (there aren't many, though). So those should in my opinion be either left alone or converted to $this->moduleHandler->loadInclude() where $this->moduleHandler has to be injected somehow.
- The changes to generate-d6-content.sh and generate-d7-content.sh I *think* could be fine in this particular case, but those scripts are supposed to run on a D6/D7 code base, so as a general rule of thumb those should be left alone. Just as a general note.

almaudoh’s picture

We should not introduce more usages of drupal_get_path() since we want to remove that function as well. See #2347783: Deprecate drupal_get_path() and replace with ExtensionList::getPath().
With the completion of the extension system in #2208429: Extension System, Part III: ExtensionList, ModuleExtensionList and ProfileExtensionList, there is a cleaner way to include files without using drupal_get_path() that's being introduced in that patch.

pguillard’s picture

Status: Needs work » Needs review
FileSize
26.56 KB
21.63 KB

I replaced include_once drupal_get_path() with ModuleHandler::loadInclude()

What do you think ?

Status: Needs review » Needs work

The last submitted patch, 62: remove_or_fix_confusing-697946-62.patch, failed testing.

pguillard’s picture

Status: Needs review » Needs work

The last submitted patch, 64: remove_or_fix_confusing-697946-64.patch, failed testing.

Version: 8.1.x-dev » 8.2.x-dev

Drupal 8.1.0-beta1 was released on March 2, 2016, which means new developments and disruptive changes should now be targeted against the 8.2.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

The last submitted patch, 64: remove_or_fix_confusing-697946-64.patch, failed testing.

pguillard’s picture

Status: Needs work » Needs review
FileSize
26.45 KB

Patch re-rolled

Status: Needs review » Needs work

The last submitted patch, 68: remove_or_fix_confusing-697946-68.patch, failed testing.

douggreen’s picture

Was the comment in install_import_translations() accidentally changed in the last re-roll?

Version: 8.2.x-dev » 8.3.x-dev

Drupal 8.2.0-beta1 was released on August 3, 2016, which means new developments and disruptive changes should now be targeted against the 8.3.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.3.x-dev » 8.4.x-dev

Drupal 8.3.0-alpha1 will be released the week of January 30, 2017, which means new developments and disruptive changes should now be targeted against the 8.4.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.4.x-dev » 8.5.x-dev

Drupal 8.4.0-alpha1 will be released the week of July 31, 2017, which means new developments and disruptive changes should now be targeted against the 8.5.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.5.x-dev » 8.6.x-dev

Drupal 8.5.0-alpha1 will be released the week of January 17, 2018, which means new developments and disruptive changes should now be targeted against the 8.6.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

almaudoh’s picture

Now that #2208429: Extension System, Part III: ExtensionList, ModuleExtensionList and ProfileExtensionList is in, there should be more impetus to finish off this clean-up.

Mile23’s picture

Issue tags: +Kill includes
harsha012’s picture

Status: Needs work » Needs review
FileSize
30.31 KB

Please review the patch

Status: Needs review » Needs work

The last submitted patch, 77: 697946-77.patch, failed testing. View results
- codesniffer_fixes.patch Interdiff of automated coding standards fixes only.

MerryHamster’s picture

Changes were added for #77 patch:
1.Parameters were fixed in '\Drupal::moduleHandler()->loadInclude()'.
2.Removed changes for examples in module.inc because they for module_load_include(). They are correct.

I doubt about my changes in
/core/modules/system/src/Tests/Update/DbUpdatesTrait.php
and /core/modules/system/tests/src/Functional/Update/DbUpdatesTrait.php
are they correct or not? check please

MerryHamster’s picture

Status: Needs work » Needs review

Status: Needs review » Needs work

The last submitted patch, 79: 697946-79.patch, failed testing. View results
- codesniffer_fixes.patch Interdiff of automated coding standards fixes only.

Mile23’s picture

Issue tags: +Needs change record
+++ b/core/includes/module.inc
@@ -117,15 +117,20 @@ function module_load_install($module) {
+ * @deprecated in Drupal 8.x, will be removed before Drupal 9.0.

Needs a CR and a link to a CR in the deprecation message.