laravel模块之文件系统

前言:laravel模块解读,测试是最好的解读

文件系统

查看composer.json

1
2
3
4
5
6
"require": {
"php": "^7.1.3",
"illuminate/contracts": "5.7.*",
"illuminate/support": "5.7.*",
"symfony/finder": "^4.1"
},

依赖了laravel公有的组件:

  • illuminate/contracts 中文名叫契约,其实就是定义了整个laravel的基本接口
  • illuminate/support laravel的基本字符串、数组、集合、时间等基本操作

查看目录filesystem

  • Filesystem.php php文件操作封装类
  • FilesystemAdapter 文件系统适配器
  • FilesystemManager 文件系统管理者
  • FilesystemServiceProvider 文件系统服务提供者

整个设计自我感觉看起来没有太大难点,是不是太膨胀了,2333,遍历文件夹的时候使用了symfony的Finder模块。

测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
/**
* Created by PhpStorm.
* User: 小粽子
* Date: 2018/6/6
* Time: 18:07
*/

namespace Tests\Filesystem;

use Illuminate\Filesystem\Filesystem;
use PHPUnit\Framework\TestCase;
use Mockery as m;

class FilesystemTest extends TestCase
{
private $tempDir;

public function setUp()
{
$this->tempDir = __DIR__ . '/tmp';
mkdir($this->tempDir);
}

public function tearDown()
{
m::close();
$files = new Filesystem();
$files->deleteDirectory($this->tempDir);
}

public function testGetRetrievesFiles()
{
file_put_contents($this->tempDir.'/file.txt', 'Hello World');
$files = new Filesystem;
$this->assertEquals('Hello World', $files->get($this->tempDir.'/file.txt'));
}

public function testPutStoresFiles()
{
$files = new Filesystem;
$files->put($this->tempDir.'/file.txt', 'Hello World');
$this->assertStringEqualsFile($this->tempDir.'/file.txt', 'Hello World');
}
}