* @ingroup FileJournal
*/
+use Wikimedia\ObjectFactory;
use Wikimedia\Timestamp\ConvertibleTimestamp;
/**
protected $ttlDays;
/**
- * Construct a new instance from configuration.
+ * Construct a new instance from configuration. Do not call this directly, use factory().
*
* @param array $config Includes:
* 'ttlDays' : days to keep log entries around (false means "forever")
*/
- protected function __construct( array $config ) {
+ public function __construct( array $config ) {
$this->ttlDays = $config['ttlDays'] ?? false;
}
* @return FileJournal
*/
final public static function factory( array $config, $backend ) {
- $class = $config['class'];
- $jrn = new $class( $config );
- if ( !$jrn instanceof self ) {
- throw new InvalidArgumentException( "$class is not an instance of " . __CLASS__ );
- }
+ $jrn = ObjectFactory::getObjectFromSpec(
+ $config,
+ [ 'specIsArg' => true, 'assertClass' => __CLASS__ ]
+ );
$jrn->backend = $backend;
return $jrn;