soosyze / queryflatfile
The Queryflatfile is PHP library for simple database not SQL
Requires
- php: >=7.2
Requires (Dev)
- phpstan/phpstan: ^1.1
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^8.5
- rector/rector: ^0.12
- soosyze/php-cs-fixer-config: ^1.0
Suggests
- phpdocumentor/phpdocumentor: To generate documentation.
- phpmetrics/phpmetrics: To generate a code status report in HTML format.
README
About
Queryflatfile is a flat file database library written in PHP.
Stores your data by default in JSON
format, also supports txt
, msgPack and igbinary formats.
Manipulate your data with a QueryBuilder similar to SQL syntax.
Summary
Requirements
PHP version
Extensions
txt
for recording data with PHP serialize,json
for recording data in JSON format,- msgPack for recording data in binary.
- igbinary for recording data in binary.
Memory required
The minimum amount of memory required depends on the amount of data you are going to process and the type of operations.
Permission of files and directory
Permission to write and read files in the directory that will store your data.
Installation
Composer
To install Queryflatfile via Composer you must have the installer or the binary file Composer
Go to your project directory, open a command prompt and run the following command:
composer require soosyze/queryflatfile --no-dev
Or, if you use the binary file,
php composer.phar require soosyze/queryflatfile --no-dev
Simple example
require __DIR__ . '/vendor/autoload.php'; use Soosyze\Queryflatfile\Schema; use Soosyze\Queryflatfile\Request; use Soosyze\Queryflatfile\TableBuilder; use Soosyze\Queryflatfile\Driver\Json; $sch = new Schema(__DIR__ . 'data', 'schema', new Json()); $req = new Request($sch); $sch->createTableIfNotExists('user', function(TableBuilder $table): void { $table->increments('id') $table->string('name') $table->string('firstname')->nullable(); }); $req->insertInto('user', [ 'name', 'firstname' ]) ->values([ 'NOEL', 'Mathieu' ]) ->values([ 'DUPOND', 'Jean' ]) ->values([ 'MARTIN', null ]) ->execute(); $data = $req->select('id', 'name') ->from('user') ->where('firstname', '=', 'Jean') ->fetch(); print_r($data); $sch->dropTableIfExists('user');
The above example will output:
Array
(
[id] => 2
[name] => DUPOND
)
Methods
Schema
dropSchema()
,getIncrement( string $tableName )
,getSchema()
,getTableSchema( string $tableName )
,hasColumn( string $tableName, $columnName )
,hasTable( string $tableName )
,setConfig( string $host, string $name = 'schema', DriverInterface $driver = null )
.
Handling tables
alterTable( string $tableName, callable $callback )
,createTable( string $tableName, callable $callback = null )
,createTableIfNotExists( string $tableName, callable $callback = null )
:boolean( string $name )
,char( string $name, $length = 1)
,date( string $name )
,dateTime( string $name )
,float( string $name )
,increments( string $name )
,integer( string $name )
,string( string $name, $length = 255)
,text( string $name )
.
dropTable( string $tableName )
,dropTableIfExists( string $tableName )
,truncateTable( string $tableName )
.
Selection request
select( string ...$columnNames )
,from( string $tableName )
,leftJoin( string $tableName, \Closure|string $column, string $condition = '', string $value = '' )
,rightJoin( string $tableName, \Closure|string $column, string $condition = '', string $value = '' )
,union( RequestInterface $union )
,unionAll( RequestInterface $union )
,orderBy( string $columnName, int $order = SORT_DESC|SORT_ASC )
,limit( int $limit, int $offset = 0 )
.
Request for execution
insertInto( string $tableName, array $columnNames )
,values( array $rowValues )
,update( string $tableName, array $row )
,delete()
,execute()
Performs the insertion, modification and deletion of data.
Result(s) of the query
fetch(): array
Returns the first result of the query,fetchAll(): array
Returns all the results of the query,lists( string $columnName, string $key = null ): array
Returns a list of the column passed in parameter.
Where
where( string $columnName, string $condition, null|scalar $value )
,orWhere( string $columnName, string $condition, null|scalar $value )
,notWhere( string $columnName, string $condition, null|scalar $value )
,orNotWhere( string $columnName, string $condition, null|scalar $value )
.
Supported conditions (===, ==, !=, <>, <, <=, >, >=, like, ilike, not like, not ilike)
Where
whereGroup( \Closure $columnName )
,orWhereGroup( \Closure $columnName )
,notWhereGroup( \Closure $columnName )
,orNotWhereGroup( \Closure $columnName )
.
Where between
between( string $columnName, $min, $max )
,orBetween( string $columnName, $min, $max )
,notBetween( string $columnName, $min, $max )
,orNotBetween( string $columnName, $min, $max )
.
Where in
in( string $columnName, array $values )
,orIn( string $columnName, array $values )
,notIn( string $columnName, array $values )
,orNotIn( string $columnName, array $values )
.
Where isNull
isNull( string $columnName )
,orIsNull( string $columnName )
,isNotNull( string $columnName )
,orIsNotNull( string $columnName )
.
Where regex
regex( string $columnName, string $pattern )
,orRegex( string $columnName, string $pattern )
,notRegex( string $columnName, string $pattern )
,orNotRegex( string $columnName, string $pattern )
.
Usage
For examples of uses, refer to the user documentation.
License
This project is licensed under the MIT license.