Files
2024-07-15 11:28:08 +02:00

132 lines
3.8 KiB
PHP

<?php
/**
* @package awf
* @copyright Copyright (c)2014-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
* @license GNU GPL version 3 or later
*/
namespace Awf\Filesystem;
use Awf\Container\Container;
/**
* Filesystem abstraction interface.
*
* The filesystem abstraction lets us perform operations on local files either directly or through and (S)FTP access
* layer, e.g. on hosts which run (S)FTP and the web server under different users. As you can see there are is read
* operation. We assume that files are readable directly at all times.
*
* @codeCoverageIgnore
*/
interface FilesystemInterface
{
/**
* Public constructor
*
* @param array $options Configuration options for the filesystem abstraction object
* @param Container $container Application container
*
* @return FilesystemInterface
*/
public function __construct(array $options, Container $container = null);
/**
* Write the contents into the file
*
* @param string $fileName The full path to the file
* @param string $contents The contents to write to the file
*
* @return boolean True on success
*/
public function write($fileName, $contents);
/**
* Delete a file (remove it from the disk)
*
* @param string $fileName The full path to the file
*
* @return boolean True on success
*/
public function delete($fileName);
/**
* Create a copy of the file
*
* @param string $from The full path of the file to copy from
* @param string $to The full path of the file that will hold the copy
*
* @return boolean True on success
*/
public function copy($from, $to);
/**
* Move or rename a file
*
* @param string $from The full path of the file to move
* @param string $to The full path of the target file
*
* @return boolean True on success
*/
public function move($from, $to);
/**
* Change the permissions of a file
*
* @param string $fileName The full path of the file whose permissions will change
* @param integer $permissions The new permissions, e.g. 0644 (remember the leading zero in octal numbers!)
*
* @return boolean True on success
*/
public function chmod($fileName, $permissions);
/**
* Return the current working dir
*
* @return string
*/
public function cwd();
/**
* Create a directory if it doesn't exist. The operation is implicitly recursive, i.e. it will create all
* intermediate directories if they do not already exist.
*
* @param string $dirName The full path of the directory to create
* @param integer $permissions The permissions of the created directory
*
* @return boolean True on success
*/
public function mkdir($dirName, $permissions = 0755);
/**
* Remove a directory if it exists.
*
* @param string $dirName The full path of the directory to remove
* @param boolean $recursive Should I remove its contents recursively? Otherwise it will fail if the directory
* is not empty.
*
* @return mixed
*/
public function rmdir($dirName, $recursive = true);
/**
* Translate an absolute filesystem path into a relative path for use by the filesystem abstraction, e.g. a relative
* (S)FTP path
*
* @param string $fileName The full filesystem path of a file or directory
*
* @return string The translated path for use by the filesystem abstraction
*/
public function translatePath($fileName);
/**
* Lists the subdirectories inside a directory
*
* @param null|string $dir The directory to scan. Skip to use the current directory.
*
* @return array|bool A list of folders, or false if we could not get a listing
*
* @throws \RuntimeException When the server is incompatible with our folder scanner
*/
public function listFolders($dir = null);
}