diff --git a/src/Config.php b/src/Config.php index 0cfa6ca..098029a 100644 --- a/src/Config.php +++ b/src/Config.php @@ -34,13 +34,17 @@ class Config /** * Assign configuration data to a module object * - * @param string $moduleID Module identifier + * @param string $moduleID Module identifier * @param mixed $module Pointer to a module instance to be configured + * @param array $configuration Collection of key => value configuration parameters */ - public static function implement($moduleID, & $module) + public static function implement($moduleID, & $module, & $configuration = null) { - // Pointer to module configuration - $configuration = & self::$data[$moduleID]; + // If external configuration is not passed + if (!isset($configuration)) { + // Pointer to module configuration + $configuration = & self::$data[$moduleID]; + } // If module configuration loaded - set module params if (isset($configuration)) { diff --git a/src/Module.php b/src/Module.php index 4f3c12a..c4783d7 100644 --- a/src/Module.php +++ b/src/Module.php @@ -591,10 +591,16 @@ private function _setArray( $array, $viewprefix = null ) public function __set( $field, $value = NULL ) { // This is object - if( is_object( $field )) - { - // If iModuleViewable implementor is passed - if( in_array( ns_classname('iModuleViewable','samson\core'), class_implements($field )) ) $this->_setObject( $field, $value ); + if (is_object($field)) { + $implements = class_implements($field); + // If iModuleViewable implements is passed + if( + // TODO: Remove old interface support in future + in_array(ns_classname('iModuleViewable','samson\core'), $implements) + || in_array(AutoLoader::className('IViewSettable','samson\core'), $implements) + ) { + $this->_setObject( $field, $value ); + } } // If array is passed else if( is_array( $field ) ) $this->_setArray( $field, $value );