Konzole a CLI
Konzole podobná logice Symfony Console či Laravel Artisan. Využíváme knihovnu CLImate.
Spuštění
Spustit ji lze pomocí spustitelného skriptu console uloženém v kořenovém adresáři projektu:
./console
php console
Bez příkazu použije list pro výpis všech dostupných skupin a jejich příkazů:
Usage: console [command]
Optional Arguments:
command
The command you want to run
Available commands:
list List commands
cache
cache:delete Delete the cache
cache:purge Purge the cache
db
db:create:page Create new page
db:create:user Create new user
make
make:cubetype Make a new cube type
make:endpoint Make a new endpoint
make:module Make a new admin controller
make:tag Make a new tag
sessions
sessions:purge Purge sessions
Struktura příkazů
Jednotlivé příkazy jsou PHP skripty uložené v adresářové struktuře v adresáři app/commands. Příkaz db:create:page spustí php skript app/commands/db/create/page.php.
app/commands/
├── list.php
├── cache/
│ ├── delete.php
│ └── purge.php
├── db/
│ └── create/
│ ├── page.php
│ └── user.php
└── make/
├── cubetype.php
├── endpoint.php
├── module.php
└── tag.php
Pozn.: Pokud je třeba pomocný adresář pro uložení určitých souborů, použijte první znak adresáře podtržítko (např. app/commands/make/_tag).
Vlastní příkazové skripty
Každý skript má popisek definovaný pomocí poznámky v prvních 1000 znacích skriptu.
Jednoduchý příkaz
sessions:purge - nejjednodušší možnost skriptu, zavolá další skript:
<?php
// @description Purge sessions
declare(strict_types=1);
require DIR . '/app/cron/purge-sessions.php';
Pokročilý příkaz s CLImate
make:tag - plně využívá CLImate a vytváří nový tag se šablonou:
<?php
// @description Make a new tag
declare(strict_types=1);
use Rakit\Validation\Validator;
$climate = new League\CLImate\CLImate;
// tag
do {
$input = $climate->yellow()->input('Enter tag name (without .php):');
$response = $input->prompt();
$message = validation('tag', $response, 'required|regex:/^[a-zA-Z0-9_\-]+$/');
if ($message) {
$climate->red($message);
}
} while ($message);
define('_TAG', $response);
// path
do {
$input = $climate->yellow()->input('Enter the relative path from app/tags to the tag:');
$input->defaultTo('');
$response = $input->prompt();
$message = validation('path', $response, 'regex:/^[\w\/\.]+$/i');
if ($message) {
$climate->red($message);
}
} while ($message);
define('_PATH', trim($response, '/'));
// template?
$input = $climate->yellow()->confirm('Do you want to use the output .tpl template?');
$input->defaultTo('yes');
define('_TEMPLATE', $input->confirmed());
// recapitulation
$climate->out('');
$padding = $climate->padding(11)->char(' ');
$padding->label('Tag:')->result(_TAG . '.php');
$padding->label('Template:')->result(_TEMPLATE ? _TAG . '.tpl' : 'no');
$padding->label('Path:')->result('/app/tags' . ('/' . _PATH ?: ''));
$climate->out('');
// confirm
$input = $climate->yellow()->confirm('Make?');
$input->defaultTo('yes');
if (!$input->confirmed()) {
exit;
}
// ... vytváření tagu
Dostupné příkazy
Cache
cache:purge- Smaže mezipaměťcache:delete- Vymaže konkrétní klíč z mezipaměti
Database
db:create:page- Vytvoří novou stránku v databázidb:create:user- Vytvoří nového admin uživatele
Make
make:cubetype- Vytvoří nový typ kostky (cube type)make:endpoint- Vytvoří nový data endpointmake:module- Vytvoří nový admin modul/kontrolermake:tag- Vytvoří nový template tag
Sessions
sessions:purge- Vymaže všechny sessions
Psaní vlastních příkazů
- Vytvořte strukturu adresářů podle názvu příkazu v
app/commands/ - Vytvořte PHP soubor (bez .php koncovky v příkazu)
- Na začátku souboru přidejte comment s popisem:
// @description Popis příkazu - Použijte
$climate(League CLImate) pro interakci s uživatelem - Pro validaci dat použijte
validation()funkci (Rakit)