将PHP更新为PHP 7后,CodeIgniter HMVC错误

After updating 5.6 to PHP 7. I was using HMVC implementation of Code Igniter and PHP upgrade started throwing following errors:-

  1. A PHP Error was encountered Severity: Warning

    Message: Declaration of MX_Loader::library($library, $params = NULL, $object_name = NULL) should be compatible with CI_Loader::library($library = '', $params = NULL, $object_name = NULL)

    Filename: MX/Loader.php

    Line Number: 143

  2. A PHP Error was encountered Severity: Warning

    Message: Declaration of MX_Loader::helper($helper) should be compatible with CI_Loader::helper($helpers = Array)

    Filename: MX/Loader.php

    Line Number: 0

  3. A PHP Error was encountered Severity: Warning

    Message: Declaration of MX_Loader::helpers($helpers) should be compatible with CI_Loader::helpers($helpers = Array)

    Filename: MX/Loader.php

    Line Number: 0

  4. A PHP Error was encountered Severity: Warning

    Message: Declaration of MX_Loader::language($langfile, $lang = '', $return = false) should be compatible with CI_Loader::language($file = Array, $lang = '')

    Filename: MX/Loader.php

    Line Number: 0

  5. A PHP Error was encountered Severity: Warning

    Message: Declaration of MX_Loader::_ci_get_component($component) should be compatible with & CI_Loader::_ci_get_component($component)

    Filename: MX/Loader.php

    Line Number: 0

  6. A PHP Error was encountered Severity: Warning

    Message: Declaration of MX_Lang::load($langfile, $lang = '', $return = false, $_module = NULL) should be compatible with CI_Lang::load($langfile = '', $idiom = '', $return = false, $add_suffix = true, $alt_path = '')

    Filename: MX/Lang.php

    Line Number: 70

  7. A PHP Error was encountered Severity: Notice

    Message: Only variables should be assigned by reference

    Filename: core/Loader.php

    Line Number: 257

I have fixed all issue. Bellow I have given:

 1.third_party\MX\Lang.php
    line = 134
    public function library($library = '', $params = NULL, $object_name = NULL) 

    2.third party\MX\Loder.php
     line=105
     pulic function helper($helper = array())

    3.third party\MX\Loder.php
     line=120
     pulic function helper($helper = array())


    4.third party\MX\Loder.php
     line=124
    public function language($langfile=array(), $idiom = '', $return = FALSE, $add_suffix = TRUE, $alt_path = '') 

    5.third party\MX\Loder.php
     line=271
    public function  &_ci_get_component($component)


    6.third party\MX\Lang.php
     line=70
    public function load($langfile ='', $lang = '', $return = FALSE, $add_suffix = TRUE, $alt_path = '', $_module = '')


    7.system/core/commopn.php
     line=257
         $_config[0] =& $config;
           return $_config[0];

You can read the description of your error, it said that some functions in MX_Loader class is not compatible. It is not compatible with the parent class.

My MX Class extends CI_Loader, which is the CI Core loader. So just find the mentioned function in the error message and find it in the Core Loader. You can find it in system/core/loader.php

For example, the error number 1 has library function error. Just find "library" function in core loader and copy the parameter inside the function to the parameter of the library function in your MX loader. And so on