remove parser and add collection package into this library

This commit is contained in:
2022-10-27 19:57:52 +02:00
parent a22d611816
commit affab28c09
14 changed files with 434 additions and 390 deletions

View File

@@ -1,7 +1,7 @@
NGINX Configurator
==================
PHP Library for NGINX configuration parser/generator
PHP Library for NGINX configuration generator
![PHP 8.1](https://img.shields.io/badge/PHP-8.1-8C9CB6.svg?style=flat)
@@ -27,60 +27,6 @@ This library requires *PHP* in `>=8.1` version.
## Usage
Parsing configuration string:
```php
use Envoyr\NginxConfigurator\Builder;
use Envoyr\NginxConfigurator\Config\Server;
use Envoyr\NginxConfigurator\Parser;
require 'vendor/autoload.php';
$config = <<<CONFIG
server {
listen 8080;
root /data/www/web;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/www;
}
# pass the PHP scripts to FastCGI server listening on the php-fpm socket
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
CONFIG;
$parser = new Parser();
$defaultConfig = $parser->parse($config);
/** @var Server $defaultServers[] */
$defaultServers = $defaultConfig->search(function (Node $node) {
return $node instanceof Server;
});
$builder = new Builder();
if (count($defaultServers) > 0) {
/** @var Server $defaultServer */
foreach ($defaultServers as $defaultServer) {
$builder->append($defaultServer);
}
}
```
Generating configuration string:
```php
@@ -167,37 +113,6 @@ server {
}
```
There are also methods to read and dump file:
```php
use Envoyr\NginxConfigurator\Builder;
use Envoyr\NginxConfigurator\Config\Location;
use Envoyr\NginxConfigurator\Config\Server;
use Envoyr\NginxConfigurator\Node\Directive;
use Envoyr\NginxConfigurator\Node\Literal;
use Envoyr\NginxConfigurator\Parser;
require __DIR__ . '/../vendor/autoload.php';
$parser = new Parser();
$builder = new Builder();
$configuration = $parser->parseFile('default.conf');
/** @var Server $servers[] */
$servers = $configuration->search(function (Node $node) {
return $node instanceof Server;
});
if (count($servers) > 0) {
/** @var Server $server */
foreach ($servers as $server) {
$builder->append($server);
}
}
$builder->dumpFile('generated.conf');
```
## TODO
* [ ] Implement comments parsing