mirror of
https://github.com/PrivateBin/PrivateBin.git
synced 2025-03-14 01:46:38 -04:00
feat: Allow to change the Configuration in the _construct
So, now we can change the Configuration class, override it even if we want.
This commit is contained in:
parent
e67972417e
commit
c04a551215
@ -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();
|
||||
|
@ -1,6 +1,7 @@
|
||||
<?php declare(strict_types=1);
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use PrivateBin\Configuration;
|
||||
use PrivateBin\Controller;
|
||||
use PrivateBin\Data\Filesystem;
|
||||
use PrivateBin\Persistence\ServerSalt;
|
||||
@ -147,6 +148,20 @@ class ControllerTest extends TestCase
|
||||
new Controller;
|
||||
}
|
||||
|
||||
/**
|
||||
* @runInSeparateProcess
|
||||
*/
|
||||
public function testNonDefaultConf()
|
||||
{
|
||||
$newConfig = new class extends Configuration {};
|
||||
$configValue = (new ReflectionClass(Controller::class))->getProperty('_conf');
|
||||
$configValue->setAccessible(true);
|
||||
ob_start();
|
||||
$controller = new Controller($newConfig);
|
||||
ob_end_clean();
|
||||
$this->assertSame($newConfig, $configValue->getValue($controller));
|
||||
}
|
||||
|
||||
/**
|
||||
* @runInSeparateProcess
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user