336a28fa4a
See https://github.com/shaarli/Shaarli/issues/1307 for details
46 lines
1.1 KiB
PHP
46 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace Shaarli\Formatter;
|
|
|
|
use Shaarli\Config\ConfigManager;
|
|
|
|
/**
|
|
* Class FormatterFactory
|
|
*
|
|
* Helper class used to instantiate the proper BookmarkFormatter.
|
|
*
|
|
* @package Shaarli\Formatter
|
|
*/
|
|
class FormatterFactory
|
|
{
|
|
/** @var ConfigManager instance */
|
|
protected $conf;
|
|
|
|
/**
|
|
* FormatterFactory constructor.
|
|
*
|
|
* @param ConfigManager $conf
|
|
*/
|
|
public function __construct(ConfigManager $conf)
|
|
{
|
|
$this->conf = $conf;
|
|
}
|
|
|
|
/**
|
|
* Instanciate a BookmarkFormatter depending on the configuration or provided formatter type.
|
|
*
|
|
* @param string|null $type force a specific type regardless of the configuration
|
|
*
|
|
* @return BookmarkFormatter instance.
|
|
*/
|
|
public function getFormatter($type = null)
|
|
{
|
|
$type = $type ? $type : $this->conf->get('formatter', 'default');
|
|
$className = '\\Shaarli\\Formatter\\Bookmark'. ucfirst($type) .'Formatter';
|
|
if (!class_exists($className)) {
|
|
$className = '\\Shaarli\\Formatter\\BookmarkDefaultFormatter';
|
|
}
|
|
|
|
return new $className($this->conf);
|
|
}
|
|
}
|