SMMP/build/log/core/FileDriver.php

135 lines
2.9 KiB
PHP
Executable File

<?php
namespace log\core;
class FileDriver{
/* CREATES A FILE WITH ITS NEEDED DIRECTORIES
*
* @path<String> Path of the needed file
*
* @return created<Boolean> If the file has been created successfully
*
*/
public static function create($file){
/* (0) Checks arguments */
if( !is_string($file) || is_dir($file) )
return false;
/* (1) Creates file */
try{
return fclose( fopen($file, 'w') );
}catch(\Exception $e){ return false; }
}
/* READS FILE'S CONTENT
*
* @file<String> File to read
*
*/
public static function read($file){
/* (0) Checks arguments */
if( !is_string($file) )
throw new \Exception('Wrong argument for read(<String>).');
/* (1) Initializing driver on file (read-flag) */
$driver = new \SplFileObject($file, 'r');
/* (2) Read lines */
$read = '';
$line = 0;
while( $driver->current() ){
$read .= $driver->current();
$driver->next();
}
/* (3) Returns result */
return $read;
}
/* READS A FILE'S SPECIFIC LINE
*
* @file<String> File to read
* @line<int> Line to read
*
*/
public static function readline($file, $line){
/* (0) Checks arguments */
if( !is_string($file) || intval($line) !== $line )
throw new \Exception('Wrong argument for readline(<String>, <int>).');
/* (1) Initializing driver on file (read-flag) */
$driver = new \SplFileObject($file, 'r');
/* (2) Goto specific line */
$driver->seek($line);
/* (3) Return line's content */
if( $driver->key() == $line )
return $driver->current();
else
return null;
}
/* WRITES CONTENT TO A FILE
*
* @file<String> File to write to
* @content<String> Content to write
*
* @return written<Boolean> Returns if the content have been written successfully
*
* @note: Creates file if it is possible with `fopen()`
*
*/
public static function write($file, $content){
/* (0) Checks arguments */
if( !is_string($file) || !is_string($content) )
return false;
/* (1) Erase file */
try{
fclose( fopen($file, 'w') );
}catch(\Exception $e){ return false; }
/* (2) Get driver (write-flag) */
$driver = new \SplFileObject($file, 'r+');
/* (3) Writes content */
return !is_null( $driver->fwrite($content) );
}
/* APPENDS CONTENT TO A FILE
*
* @file<String> File to append content to
* @content<String> Content to append
*
* @return append<Boolean> Returns if the content have been append successfully
*
* @note: If file doesn't exists, returns false
*
*/
public static function append($file, $content){
/* (0) Checks arguments */
if( !is_file($file) || !is_string($content) )
return false;
/* (1) Get driver (append-flag) */
$driver = new \SplFileObject($file, 'a');
/* (2) append content */
return !is_null( $driver->fwrite($content.PHP_EOL) );
}
}
?>