19 declare(strict_types=1);
    28     public const SEC = 
".sec";
    34     public function __construct(array $white_list, 
protected array $black_list)
    36         $this->white_list[] = 
'';
    37         $this->white_list = array_unique($white_list);
    53         return $this->black_list;
    64         $pi = pathinfo($filename);
    66         $basename = str_replace(
".", 
"", $pi[
"basename"]);
    67         if (trim($basename) == 
"") {
    68             throw new \RuntimeException(
"Invalid upload filename.");
    70         $basename .= self::SEC;
    71         if ($pi[
"dirname"] != 
"" && ($pi[
"dirname"] != 
"." || substr($filename, 0, 2) == 
"./")) {
    72             return $pi[
"dirname"] . 
"/" . $basename;
    82         $pi = pathinfo($filename);
    84         return in_array(strtolower($pi[
"extension"]), $this->white_list)
    85             && !in_array(strtolower($pi[
"extension"]), $this->black_list);
 
__construct(array $white_list, protected array $black_list)
 
hasValidFileName(string $filename)
 
getValidFileName(string $filename)