1
0
mirror of https://github.com/mrclay/minify.git synced 2025-08-06 22:26:28 +02:00
Files
minify/lib/Minify/Controller/Files.php
2019-12-11 17:06:18 +02:00

65 lines
1.7 KiB
PHP

<?php
/**
* Class Minify_Controller_Files
*/
/**
* Controller class for minifying a set of files
*
* E.g. the following would serve the minified Javascript for a site
* <code>
* $options = [
* 'checkAllowDirs' => false, // allow files to be anywhere
* ];
* $sourceFactory = new Minify_Source_Factory($env, $options, $cache);
* $controller = new Minify_Controller_Files($env, $sourceFactory);
* $minify->serve($controller, [
* 'files' => [
* '//js/jquery.js',
* '//js/plugins.js',
* '/home/username/file.js',
* ],
* ]);
* </code>
*/
class Minify_Controller_Files extends Minify_Controller_Base
{
/**
* Set up file sources
*
* @param array $options controller and Minify options
*
* @return Minify_ServeConfiguration
*
* Controller options:
*
* 'files': (required) array of complete file paths, or a single path
*/
public function createConfiguration(array $options)
{
// strip controller options
$files = $options['files'];
// if $files is a single object, casting will break it
if (is_object($files)) {
$files = array($files);
} elseif (!is_array($files)) {
$files = (array) $files;
}
unset($options['files']);
$sources = array();
foreach ($files as $file) {
try {
$sources[] = $this->sourceFactory->makeSource($file);
} catch (Minify_Source_FactoryException $e) {
$this->logger->error($e->getMessage());
return new Minify_ServeConfiguration($options);
}
}
return new Minify_ServeConfiguration($options, $sources);
}
}