diff --git a/lib/Controller.php b/lib/Controller.php index bac65ebd..986ee441 100644 --- a/lib/Controller.php +++ b/lib/Controller.php @@ -112,10 +112,12 @@ class Controller * * initializes and runs PrivateBin * + * @param ?Configuration $config + * * @access public * @throws Exception */ - public function __construct() + public function __construct(?Configuration $config = null) { if (version_compare(PHP_VERSION, self::MIN_PHP_VERSION) < 0) { error_log(I18n::_('%s requires php %s or above to work. Sorry.', I18n::_('PrivateBin'), self::MIN_PHP_VERSION)); @@ -126,7 +128,8 @@ class Controller return; } - // load config from ini file, initialize required classes + // load config (using ini file by default) & initialize required classes + $this->_conf = $config ?? new Configuration(); $this->_init(); switch ($this->_request->getOperation()) { @@ -174,7 +177,6 @@ class Controller */ private function _init() { - $this->_conf = new Configuration; $this->_model = new Model($this->_conf); $this->_request = new Request; $this->_urlBase = $this->_request->getRequestUri(); diff --git a/tst/ControllerTest.php b/tst/ControllerTest.php index 98eb6458..e5316ab5 100644 --- a/tst/ControllerTest.php +++ b/tst/ControllerTest.php @@ -1,6 +1,7 @@ getProperty('_conf'); + $configValue->setAccessible(true); + ob_start(); + $controller = new Controller($newConfig); + ob_end_clean(); + $this->assertSame($newConfig, $configValue->getValue($controller)); + } + /** * @runInSeparateProcess */