for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace h4kuna\Upload\DI;
use Nette\DI;
class UploadExtension extends DI\CompilerExtension
{
private $defaults = [
'destinations' => '%wwwDir%/upload',
];
public function loadConfiguration()
$this->config += $this->defaults;
$builder = $this->getContainerBuilder();
$config = DI\Helpers::expand($this->config, $builder->parameters);
if (!is_array($config['destinations'])) {
$config['destinations'] = ['default' => $config['destinations']];
}
foreach ($config['destinations'] as $i => $destination) {
if (is_dir($destination)) {
$definition = $builder->addDefinition($this->prefix('driver.' . $i))
->setClass('h4kuna\Upload\Driver\LocalFilesystem', [$destination]);
} else {
$definition = $destination;
// Download
$builder->addDefinition($this->prefix('download.' . $i))
->setClass('h4kuna\Upload\Download', [$definition, '@http.request', '@http.response']);
// Upload
$builder->addDefinition($this->prefix('upload.' . $i))
->setClass('h4kuna\Upload\Upload', [$definition]);