Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 57a2f45

Browse files
add support for creating a temporary file with a custom name
1 parent 7a3a507 commit 57a2f45

File tree

4 files changed

+48
-34
lines changed

4 files changed

+48
-34
lines changed

‎README.md‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,10 @@ $tempFile = TempFile::fromBinary($binaryData);
5050
Create a temporary file from a resource.
5151

5252
```php
53-
$binaryData = '...';
54-
$tempFile = TempFile::fromBinary($binaryData);
53+
$resource = fopen('php://memory', 'w+');
54+
fwrite($resource, 'test');
55+
fseek($resource, 0);
56+
$tempFile = TempFile::fromResource($resource);
5557
```
5658
---
5759
# FileInfo

‎src/TempFile.php‎

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,18 @@ public static function fromResource($resource): FileInfo
7373
*
7474
* @return FileInfo The FileInfo object representing the temporary file
7575
*/
76-
private static function createTempFile(): FileInfo
76+
public static function createTempFile(?string$filename = null): FileInfo
7777
{
78-
$tmpFilePath = tempnam(sys_get_temp_dir(), 'tmp_');
78+
if ($filename === null) {
79+
$filename = tempnam(sys_get_temp_dir(), 'tmp_');
80+
} else {
81+
$filename = sys_get_temp_dir() . DIRECTORY_SEPARATOR . $filename;
82+
if (!file_exists($filename)) {
83+
touch($filename);
84+
}
85+
}
86+
87+
$tmpFilePath = $filename;
7988
if ($tmpFilePath === false) {
8089
throw new RuntimeException('Unable to create temporary file.');
8190
}

‎tests/FileExplorerTest.php‎

Lines changed: 19 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -16,36 +16,25 @@ public function testListAll()
1616
$this->assertIsArray($files);
1717
$this->assertCount(3, $files);
1818

19-
$file1 = $files[0];
20-
$this->assertIsArray($file1);
21-
$this->assertArrayHasKey('path', $file1);
22-
$this->assertArrayHasKey('name', $file1);
23-
$this->assertArrayHasKey('is_directory', $file1);
24-
$this->assertArrayHasKey('size', $file1);
25-
$this->assertArrayHasKey('modified_time', $file1);
26-
$this->assertFalse($file1['is_directory']);
27-
28-
$file2 = $files[1];
29-
$this->assertIsArray($file2);
30-
$this->assertArrayHasKey('path', $file2);
31-
$this->assertArrayHasKey('name', $file2);
32-
$this->assertArrayHasKey('is_directory', $file2);
33-
$this->assertArrayHasKey('size', $file2);
34-
$this->assertArrayHasKey('modified_time', $file2);
35-
$this->assertFalse($file2['is_directory']);
36-
37-
$file3 = $files[2];
38-
$this->assertIsArray($file3);
39-
$this->assertArrayHasKey('path', $file3);
40-
$this->assertArrayHasKey('name', $file3);
41-
$this->assertArrayHasKey('is_directory', $file3);
42-
$this->assertArrayHasKey('size', $file3);
43-
$this->assertArrayHasKey('modified_time', $file3);
44-
$this->assertArrayHasKey('files', $file3);
45-
$this->assertTrue($file3['is_directory']);
46-
47-
$this->assertIsArray($file3['files']);
48-
$this->assertCount(2, $file3['files']);
19+
$foldersCount = 0;
20+
$filesCount = 0;
21+
foreach ($files as $file) {
22+
if ($file['is_directory']) {
23+
$foldersCount++;
24+
$this->assertIsArray($file['files']);
25+
$this->assertCount(2, $file['files']);
26+
}else{
27+
$filesCount++;
28+
}
29+
$this->assertArrayHasKey('path', $file);
30+
$this->assertArrayHasKey('name', $file);
31+
$this->assertArrayHasKey('is_directory', $file);
32+
$this->assertArrayHasKey('size', $file);
33+
$this->assertArrayHasKey('modified_time', $file);
34+
}
35+
36+
$this->assertEquals(1, $foldersCount);
37+
$this->assertEquals(2, $filesCount);
4938

5039
}
5140

‎tests/TempFileTest.php‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,18 @@ public function testFromResourceReturnsFileInfoObject()
4141

4242
}
4343

44+
public function testCreateTempFile()
45+
{
46+
47+
$fileInfo = TempFile::createTempFile();
48+
$this->assertInstanceOf(FileInfo::class, $fileInfo);
49+
$this->assertNotEmpty( $fileInfo->getFilename());
50+
$this->assertStringStartsWith('/tmp/', $fileInfo->getRealPath());
51+
52+
$fileInfo = TempFile::createTempFile('test.pdf');
53+
$this->assertInstanceOf(FileInfo::class, $fileInfo);
54+
$this->assertNotEmpty( $fileInfo->getFilename());
55+
$this->assertEquals('/tmp/test.pdf', $fileInfo->getRealPath());
56+
}
57+
4458
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /