beautified

This commit is contained in:
Arsen Mirzaev Tatyano-Muradovich 2024-11-24 00:14:28 +07:00
parent ddf593e42d
commit 24ef880439
4 changed files with 42 additions and 11 deletions

View File

@ -1,2 +1,33 @@
# csv
# Comma-Separated Values by RFC 4180
A lightweight database in pure PHP<br>
It will perfectly replace complex databases in simple projects
## Requirements
- PHP 8.4
## Installation
1. `composer require mirzaev/csv`
2. Create a class that inherits `mirzaev/csv/database` and redefine the `database::FILE` constant
3. Enjoy!
## Example
```php
<?php
// Library for CSV
use mirzaev\csv\{database, record};
// Initializing the database
$database = new database('name', 'age', 'created');
// Initializing the record
$record = new record(['Arsen', '23', time());
// Writing to the database
$database->write($record);
?>
```
## Used by
- My site-article about how i was kidnapped by PMC Wagner operatives [mirzaev/repression](https://git.mirzaev.sexy/mirzaev/repression)
- My decentralized P2P blockchain chats project [mirzaev/notchat](https://git.mirzaev.sexy/mirzaev/notchat)

View File

@ -69,14 +69,14 @@ class database
/**
* Constructor
*
* @param array|null $columns Columns
* @param string ...$columns Columns
*
* @return void
*/
public function __construct(?array $columns = null)
public function __construct(string ...$columns)
{
// Initializing columns
if (isset($columns)) $this->columns = $columns;
if (!empty($columns)) $this->columns = $columns;
}
/**

View File

@ -43,14 +43,14 @@ class record
/**
* Constructor
*
* @param string|null $row Row for converting to record instance parameters
* @param mixed $parameters Parameter of the record
*
* @return void
*/
public function __construct(?string $row = null)
public function __construct(mixed ...$parameters)
{
// Initializing parameters
if (isset($row)) $this->parameters = static::deserialize($row);
if (!empty($parameters)) $this->parameters = $parameters;
}
/**
@ -105,7 +105,7 @@ class record
*
* @return array Deserialized record
*/
public function deserialize(string $row): array
public static function deserialize(string $row): array
{
// Separating row by commas
preg_match_all('/(.*)(?>(?<!\\\),|$)/Uu', $row, $matches);

View File

@ -10,7 +10,7 @@ require(__DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRE
$action = 0;
// Initializing the test database
$database = new database([
$database = new database(
'empty_value_at_the_beginning',
'name',
'second_name',
@ -30,12 +30,12 @@ $database = new database([
'string_with_space_at_the_beginning',
'string_with_escaped_comma',
'string_with_unicode_symbols'
]);
);
echo '[' . ++$action . "] Created the database instance with columns\n";
// Initializing the test record with the test row
$record = new record(',"Arsen","Mirzaev","23",true,,"",100,null,"null","102.1",300.34,1001.23145,5000.400.400,"test ""value""","another"" test "" value with ""two double quotes pairs"" yeah"," starts with space","has\, an escaped comma inside","unicode символы"');
$record = new record(...record::deserialize(',"Arsen","Mirzaev","23",true,,"",100,null,"null","102.1",300.34,1001.23145,5000.400.400,"test ""value""","another"" test "" value with ""two double quotes pairs"" yeah"," starts with space","has\, an escaped comma inside","unicode символы"'));
echo '[' . ++$action . "] Created the record with the test row\n";