55 lines
1.7 KiB
PHP
55 lines
1.7 KiB
PHP
<?php
|
|
/**
|
|
* Copyright 2003-2017 Horde LLC (http://www.horde.org/)
|
|
*
|
|
* See the enclosed file COPYING for license information (LGPL). If you
|
|
* did not receive this file, see http://www.horde.org/licenses/lgpl21.
|
|
*
|
|
* @author Michael Slusarz <slusarz@horde.org>
|
|
* @category Horde
|
|
* @license http://www.horde.org/licenses/lgpl21 LGPL 2.1
|
|
* @package Compress
|
|
*/
|
|
|
|
/**
|
|
* This class provides an API for various compression techniques that can be
|
|
* used by Horde applications.
|
|
*
|
|
* @author Michael Slusarz <slusarz@horde.org>
|
|
* @category Horde
|
|
* @copyright 2003-2017 Horde LLC
|
|
* @license http://www.horde.org/licenses/lgpl21 LGPL 2.1
|
|
* @package Compress
|
|
*/
|
|
class Horde_Compress
|
|
{
|
|
/**
|
|
* Attempts to return a concrete Horde_Compress_Base instance based on
|
|
* $driver.
|
|
*
|
|
* @param string $driver Either a driver name, or the full class name to
|
|
* use (class must extend Horde_Compress_Base).
|
|
* @param array $params Hash containing any additional configuration
|
|
* or parameters a subclass needs.
|
|
*
|
|
* @return Horde_Compress_Base The newly created concrete instance.
|
|
* @throws Horde_Compress_Exception
|
|
*/
|
|
public static function factory($driver, $params = null)
|
|
{
|
|
/* Base drivers (in Compress/ directory). */
|
|
$class = __CLASS__ . '_' . Horde_String::ucfirst($driver);
|
|
if (@class_exists($class)) {
|
|
return new $class($params);
|
|
}
|
|
|
|
/* Explicit class name. */
|
|
if (@class_exists($driver)) {
|
|
return new $driver($params);
|
|
}
|
|
|
|
throw new Horde_Compress_Exception(__CLASS__ . ': Class definition of ' . $driver . ' not found.');
|
|
}
|
|
|
|
}
|