31 lines
958 B
PHP
31 lines
958 B
PHP
<?php
|
|
namespace nur\sery\file\csv;
|
|
|
|
use nur\sery\file\web\Upload;
|
|
use nur\sery\os\path;
|
|
use nur\sery\ValueException;
|
|
|
|
trait TAbstractBuilder {
|
|
/** @param Upload|string|array $builder */
|
|
static function with($builder): IBuilder {
|
|
if ($builder instanceof self) return $builder;
|
|
$class = null;
|
|
if ($builder instanceof Upload) {
|
|
# faire un builder dans le même format que le fichier uploadé
|
|
if ($builder->isExt(".csv")) $class = CsvBuilder::class;
|
|
else $class = static::class;
|
|
return new $class($builder->name);
|
|
}
|
|
if (is_string($builder)) $builder = ["output" => $builder];
|
|
if (!is_array($builder)) {
|
|
throw ValueException::invalid_type($builder, self::class);
|
|
}
|
|
$input = $builder["output"] ?? null;
|
|
if (is_string($input) && path::ext($input) === ".csv") {
|
|
$class = CsvBuilder::class;
|
|
}
|
|
if ($class === null) $class = static::class;
|
|
return new $class(null, $builder);
|
|
}
|
|
}
|