File
class
File extends SplFileInfo
A file in the file system.
Methods
public
|
|
__construct(string $path, bool $checkPath = true)
|
Constructs a new file from the given path. |
|
public
|
string|null |
guessExtension()
|
Returns the extension based on the mime type. |
|
public
|
string|null |
getMimeType()
|
Returns the mime type of the file. |
|
public
|
File |
move(string $directory, string $name = null)
|
Moves the file to a new location. |
|
protected
|
|
getTargetFile($directory, $name = null)
|
No description
|
|
protected
|
string |
getName(string $name)
|
Returns locale independent base name of the given path. |
|
Details
__construct()
public __construct(string $path, bool $checkPath = true)
Constructs a new file from the given path.
Parameters
string |
$path |
The path to the file |
bool |
$checkPath |
Whether to check the path or not |
Exceptions
| FileNotFoundException |
If the given path is not a file |
guessExtension()
public string|null guessExtension()
Returns the extension based on the mime type.
If the mime type is unknown, returns null.
This method uses the mime type as guessed by getMimeType()
to guess the file extension.
Return Value
string|null |
The guessed extension or null if it cannot be guessed |
See also
| ExtensionGuesser |
|
| getMimeType() |
|
getMimeType()
public string|null getMimeType()
Returns the mime type of the file.
The mime type is guessed using a MimeTypeGuesser instance, which uses finfo(),
mime_content_type() and the system binary "file" (in this order), depending on
which of those are available.
Return Value
string|null |
The guessed mime type (e.g. "application/pdf") |
See also
move()
public File move(string $directory, string $name = null)
Moves the file to a new location.
Parameters
string |
$directory |
The destination folder |
string |
$name |
The new file name |
Return Value
File |
A File object representing the new file |
Exceptions
| FileException |
if the target file could not be created |
getTargetFile()
protected getTargetFile($directory, $name = null)
getName()
protected string getName(string $name)
Returns locale independent base name of the given path.
Parameters
string |
$name |
The new file name |
Return Value
Source code
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace App\Khan\Component\HttpFoundation\File;
use App\Khan\Component\HttpFoundation\File\Exception\FileException;
use App\Khan\Component\HttpFoundation\File\Exception\FileNotFoundException;
use App\Khan\Component\HttpFoundation\File\MimeType\MimeTypeGuesser;
use App\Khan\Component\HttpFoundation\File\MimeType\ExtensionGuesser;
/**
* A file in the file system.
*
* @author Bernhard Schussek <bschussek@gmail.com>
*/
class File extends \SplFileInfo
{
/**
* Constructs a new file from the given path.
*
* @param string $path The path to the file
* @param bool $checkPath Whether to check the path or not
*
* @throws FileNotFoundException If the given path is not a file
*/
public function __construct(string $path, bool $checkPath = true)
{
if ($checkPath && !is_file($path)) {
throw new FileNotFoundException($path);
}
parent::__construct($path);
}
/**
* Returns the extension based on the mime type.
*
* If the mime type is unknown, returns null.
*
* This method uses the mime type as guessed by getMimeType()
* to guess the file extension.
*
* @return string|null The guessed extension or null if it cannot be guessed
*
* @see ExtensionGuesser
* @see getMimeType()
*/
public function guessExtension()
{
$type = $this->getMimeType();
$guesser = ExtensionGuesser::getInstance();
return $guesser->guess($type);
}
/**
* Returns the mime type of the file.
*
* The mime type is guessed using a MimeTypeGuesser instance, which uses finfo(),
* mime_content_type() and the system binary "file" (in this order), depending on
* which of those are available.
*
* @return string|null The guessed mime type (e.g. "application/pdf")
*
* @see MimeTypeGuesser
*/
public function getMimeType()
{
$guesser = MimeTypeGuesser::getInstance();
return $guesser->guess($this->getPathname());
}
/**
* Moves the file to a new location.
*
* @param string $directory The destination folder
* @param string $name The new file name
*
* @return self A File object representing the new file
*
* @throws FileException if the target file could not be created
*/
public function move($directory, $name = null)
{
$target = $this->getTargetFile($directory, $name);
if (!@rename($this->getPathname(), $target)) {
$error = error_get_last();
throw new FileException(sprintf('Could not move the file "%s" to "%s" (%s)', $this->getPathname(), $target, strip_tags($error['message'])));
}
@chmod($target, 0666 & ~umask());
return $target;
}
protected function getTargetFile($directory, $name = null)
{
if (!is_dir($directory)) {
if (false === @mkdir($directory, 0777, true) && !is_dir($directory)) {
throw new FileException(sprintf('Unable to create the "%s" directory', $directory));
}
} elseif (!is_writable($directory)) {
throw new FileException(sprintf('Unable to write in the "%s" directory', $directory));
}
$target = rtrim($directory, '/\\').DIRECTORY_SEPARATOR.(null === $name ? $this->getBasename() : $this->getName($name));
return new self($target, false);
}
/**
* Returns locale independent base name of the given path.
*
* @param string $name The new file name
*
* @return string containing
*/
protected function getName($name)
{
$originalName = str_replace('\\', '/', $name);
$pos = strrpos($originalName, '/');
$originalName = false === $pos ? $originalName : substr($originalName, $pos + 1);
return $originalName;
}
}