Refactoring the loader to set protected class variables.
Moved _ci_autoload(), which is used in CI_Controller to be a public method. Also added CI_Loader::set_base_classes() to be called in the controller so we're not setting protected vars in another class.
Also refactored in the form_helper so it's not trying to access protected vars in CI_Loader. Added the is_loaded() method to the loader to take care of the checks that were being done there.
diff --git a/system/helpers/form_helper.php b/system/helpers/form_helper.php
index a5cd97b..51a9c6c 100644
--- a/system/helpers/form_helper.php
+++ b/system/helpers/form_helper.php
@@ -1032,22 +1032,20 @@
{
$CI =& get_instance();
- // We set this as a variable since we're returning by reference
+ // We set this as a variable since we're returning by reference.
$return = FALSE;
-
- if ( ! isset($CI->load->_ci_classes) OR ! isset($CI->load->_ci_classes['form_validation']))
+
+ if ( ! ($object = $CI->load->is_loaded('form_validation')))
{
- return $return;
+ if ( ! isset($CI->$object) OR ! is_object($CI->$object))
+ {
+ return $return;
+ }
+
+ return $CI->$object;
}
-
- $object = $CI->load->_ci_classes['form_validation'];
-
- if ( ! isset($CI->$object) OR ! is_object($CI->$object))
- {
- return $return;
- }
-
- return $CI->$object;
+
+ return $return;
}
}