独学者Fossa

独学していることなど

PHP CLIツール作成中に気づいたこと

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\FlySystemwriteでも、可能でした。

③ ディレクトリCの中を、空にする

Symfonyremoveだと、ディレクトリCを削除してしまいます。

fs-extra

PHPとは関係ない話になり、脱線します。

Node.jsですが、fs-extraを使うと、全て実現が可能だったりします。

fs-extra
copySync
outputFileSync
emptyDirSync

結論

保存するデータがstringだったり、arrayだったりする場合は、下記の通り。

  1. ディレクトリが存在しない場合、ディレクトリを作成
  2. file_put_contentsを使おうかな?

あとがき

Symfony\Component\Filesystem\FilesystemdumpFileは、stringだと保存できない。

Spiral\Files\Fileswriteは、arrayだと保存できない。

ちなみに、CakePHPNette\Utilsも、stringになっていました。

League\Flysystemだと、writestringで、arrayなどの場合、writeStreamを使うと良いみたいです。