yiisoft / files
Fund package maintenance!
Open Collective
yiisoft
Installs: 71 651
Dependents: 18
Suggesters: 0
Security: 0
Stars: 18
Watchers: 15
Forks: 11
Open Issues: 1
Requires
- php: ^7.4|^8.0
- yiisoft/strings: ^2.0
Requires (Dev)
- phpunit/phpunit: ^9.5
- roave/infection-static-analysis-plugin: ^1.6
- spatie/phpunit-watcher: ^1.23
- vimeo/psalm: ^4.3
This package is auto-updated.
Last update: 2021-02-11 14:17:27 UTC
README
Yii Files
The package provides useful methods to manage files and directories.
Requirements
- PHP 7.4 or higher.
Installation
The package could be installed with composer:
composer require yiisoft/files --prefer-dist
FileHelper usage
FileHelper provides static methods you can use for various filesystem-related operations.
Working with directories
Ensure a directory exists:
use \Yiisoft\Files\FileHelper; $directory = '/path/to/dir'; FileHelper::ensureDirectory($directory);
Ensure a directory exists, and permission specified is set:
use \Yiisoft\Files\FileHelper; $directory = '/path/to/dir'; FileHelper::ensureDirectory($directory, 0775);
Remove a directory:
use \Yiisoft\Files\FileHelper; $directory = '/path/to/dir'; FileHelper::removeDirectory($directory);
Remove everything within a directory but not directory itself:
use \Yiisoft\Files\FileHelper; $directory = '/path/to/dir'; FileHelper::clearDirectory($directory);
Check if directory is empty:
use \Yiisoft\Files\FileHelper; $directory = '/path/to/dir'; FileHelper::isEmptyDirectory($directory);
Copy directory:
use \Yiisoft\Files\FileHelper; $source = '/path/to/source'; $destination = '/path/to/destination'; FileHelper::copyDirectory($source, $destination);
Additional options could be specified as third argument such as filter
or copyEmptyDirectories
.
Check method phpdoc for a full list of options.
Search
Searching for files:
use \Yiisoft\Files\FileHelper; use Yiisoft\Files\PathMatcher\PathMatcher; $files = FileHelper::findFiles('/path/to/where/to/search', [ 'filter' => (new PathMatcher())->only('**.png', '**.jpg')->except('logo.png'), ]);
Searching for directories:
use \Yiisoft\Files\FileHelper; use Yiisoft\Files\PathMatcher\PathMatcher; $directories = FileHelper::findDirectories('/path/to/where/to/search', [ 'filter' => (new PathMatcher())->except('**meta'), ]);
Other
Open a file. Same as PHP's fopen()
but throwing exceptions.
use \Yiisoft\Files\FileHelper; $handler = FileHelper::openFile('/path/to/file', 'rb');
Get last modified time for a directory or file:
use \Yiisoft\Files\FileHelper; $directory = '/path/to/dir'; $time = FileHelper::lastModifiedTime($directory);
The method is different from PHP's filemtime()
because it actually scans a directory and selects the largest
modification time from all files.
Remove a file or symlink:
use \Yiisoft\Files\FileHelper; $file = '/path/to/file.txt'; FileHelper::unlink($file);
Normalize a path:
use \Yiisoft\Files\FileHelper; $path = '/home/samdark/./test/..///dev\yii/'; echo FileHelper::normalizePath($path); // outputs: // /home/samdark/dev/yii
Testing
Unit testing
The package is tested with PHPUnit. To run tests:
./vendor/bin/phpunit
Mutation testing
The package tests are checked with Infection mutation framework with Infection Static Analysis Plugin. To run it:
./vendor/bin/roave-infection-static-analysis-plugin
Static analysis
The code is statically analyzed with Psalm. To run static analysis:
./vendor/bin/psalm
License
The Yii Files is free software. It is released under the terms of the BSD License.
Please see LICENSE
for more information.
Maintained by Yii Software.