Info
フレームワークを、インストールしていないことが、前提です。
調べきれていないかもしれないので、鵜呑みにしないでください。
リライト記事です。
調べきれていないかもしれないので、鵜呑みにしないでください。
リライト記事です。
まえがき
symfony/consoleを使って、CLIツールを作っています。
ファイルを操作する必要があって、調べたことを、忘れないよう記事にしました。
使用環境
| Name | Component | Version |
|---|---|---|
| Symfony | FileSystem | 7.1.5 |
| Laravel | FileSystem | 11.28.1 |
| Spiral | Files | 3.14.5 |
本題
比較表
| Symfony | Laravel | Spiral | |
|---|---|---|---|
| ① | mirror | copyDirectory | 無 |
| ② | dumpFile | 無 | write |
| ③ | 無 | cleanDirectory | deleteDirectory |
① ディレクトリAの中身を、ディレクトリBにコビーする
Spiralは、見つかりませんでした。
② 新規でpages/index.htmlを作成時に、ディレクトリpagesも作成する
Laravelは、見つかりませんでした。
League\FlySystemのwriteでも、可能でした。
③ ディレクトリCの中を、空にする
Symfonyのremoveだと、ディレクトリCを削除してしまいます。
fs-extra
PHPとは関係ない話になり、脱線します。
Node.jsですが、fs-extraを使うと、全て実現が可能だったりします。
| fs-extra | |
|---|---|
| ① | copySync |
| ② | outputFileSync |
| ③ | emptyDirSync |
結論
保存するデータがstringだったり、arrayだったりする場合は、下記の通り。
- ディレクトリが存在しない場合、ディレクトリを作成
file_put_contentsを使おうかな?
あとがき
Symfony\Component\Filesystem\FilesystemのdumpFileは、stringだと保存できない。
Spiral\Files\Filesのwriteは、arrayだと保存できない。
ちなみに、CakePHPやNette\Utilsも、stringになっていました。
League\Flysystemだと、writeがstringで、arrayなどの場合、writeStreamを使うと良いみたいです。