File.php
TLDR
This file defines the File
class, which extends the UploadedFile
class. It provides methods for creating fake files and images, setting the size and MIME type of the file, and retrieving the size and MIME type.
Classes
File
The File
class extends the UploadedFile
class and represents a file in the context of HTTP testing. It has the following properties:
-
$name
: The name of the file. -
$tempFile
: The temporary file resource. -
$sizeToReport
: The "size" to report. -
$mimeTypeToReport
: The MIME type to report.
The File
class has the following methods:
-
__construct($name, $tempFile)
: Creates a newFile
instance. -
create($name, $kilobytes = 0)
: Creates a new fake file. -
createWithContent($name, $content)
: Creates a new fake file with content. -
image($name, $width = 10, $height = 10)
: Creates a new fake image. -
size($kilobytes)
: Sets the "size" of the file in kilobytes. -
getSize(): int
: Gets the size of the file. -
mimeType($mimeType)
: Sets the "MIME type" for the file. -
getMimeType(): string
: Gets the MIME type of the file. -
tempFilePath()
: Gets the path to the temporary file.
<?php
namespace Illuminate\Http\Testing;
use Illuminate\Http\UploadedFile;
class File extends UploadedFile
{
/**
* The name of the file.
*
* @var string
*/
public $name;
/**
* The temporary file resource.
*
* @var resource
*/
public $tempFile;
/**
* The "size" to report.
*
* @var int
*/
public $sizeToReport;
/**
* The MIME type to report.
*
* @var string|null
*/
public $mimeTypeToReport;
/**
* Create a new file instance.
*
* @param string $name
* @param resource $tempFile
* @return void
*/
public function __construct($name, $tempFile)
{
$this->name = $name;
$this->tempFile = $tempFile;
parent::__construct(
$this->tempFilePath(), $name, $this->getMimeType(),
null, true
);
}
/**
* Create a new fake file.
*
* @param string $name
* @param string|int $kilobytes
* @return \Illuminate\Http\Testing\File
*/
public static function create($name, $kilobytes = 0)
{
return (new FileFactory)->create($name, $kilobytes);
}
/**
* Create a new fake file with content.
*
* @param string $name
* @param string $content
* @return \Illuminate\Http\Testing\File
*/
public static function createWithContent($name, $content)
{
return (new FileFactory)->createWithContent($name, $content);
}
/**
* Create a new fake image.
*
* @param string $name
* @param int $width
* @param int $height
* @return \Illuminate\Http\Testing\File
*/
public static function image($name, $width = 10, $height = 10)
{
return (new FileFactory)->image($name, $width, $height);
}
/**
* Set the "size" of the file in kilobytes.
*
* @param int $kilobytes
* @return $this
*/
public function size($kilobytes)
{
$this->sizeToReport = $kilobytes * 1024;
return $this;
}
/**
* Get the size of the file.
*
* @return int
*/
public function getSize(): int
{
return $this->sizeToReport ?: parent::getSize();
}
/**
* Set the "MIME type" for the file.
*
* @param string $mimeType
* @return $this
*/
public function mimeType($mimeType)
{
$this->mimeTypeToReport = $mimeType;
return $this;
}
/**
* Get the MIME type of the file.
*
* @return string
*/
public function getMimeType(): string
{
return $this->mimeTypeToReport ?: MimeType::from($this->name);
}
/**
* Get the path to the temporary file.
*
* @return string
*/
protected function tempFilePath()
{
return stream_get_meta_data($this->tempFile)['uri'];
}
}