10: Gereedschap & CLI

Phlo-apps hebben een CLI-laag voor build, lint, release en reflection. Gebruik het altijd via de dev entrypoint van de app.

10.1: Bouwopdrachten

php www/app.php build::run
php www/app.php build::lint
php www/app.php build::release
php www/app.php build::config
php www/app.php build::changed

build::lint zou een lege array moeten retourneren:

[]

Als lint fouten rapporteert, los de .phlo bron op en bouw opnieuw. Patch nooit de gegenereerde PHP.

10.2: Reflect opdrachten

Reflectie helpt je een app te begrijpen voordat je deze wijzigt:

php www/app.php reflect::context
php www/app.php reflect::compactRoutes
php www/app.php reflect::compactViews
php www/app.php reflect::resourceSummary
php www/app.php reflect::objectIndex
php www/app.php reflect::functionIndex

Deze commando's retourneren JSON en zijn bedoeld voor ontwikkelomgevingen met build: true.

Dezelfde introspectie stuurt de Graph view van het Phlo Control Center: elke klasse, resource en afhankelijkheidsrand van je app, live weergegeven vanuit reflect::graph:

De Control Center Graph view: de klassen, resources en afhankelijkheidsranden van je app, live weergegeven vanuit reflect::graph

10.3: Algemene CLI-dispatch

build:: en reflect:: zijn slechts twee voorbeelden van een algemener mechanisme. Phlo's CLI kan elke static, method of functie in je app aanroepen:

php www/app.php tasks::run                   # static method op een klasse
php www/app.php app.heartbeat                # method op een Phlo instantie
php www/app.php answer "is een paling een vis"   # globale functie

Drie patronen:

Patroon Dispatch Voorbeeld
Class::method args Static method op de klasse tasks::run, backup::nightly
object.method args Instantie method via phlo(object) app.heartbeat, cms.reindex
function args Globale functie answer "vraag"

De output gaat naar stdout als JSON, fouten gaan naar stderr met een niet-nul exitcode. Dat maakt elke routine in je app direct bruikbaar vanuit cron, deploy scripts, monitoring of een terminal, zonder dat je een aparte CLI-laag hiervoor hoeft te bouwen.

Alleen beschikbaar met build: true in www/app.php. Voer het niet uit tegen een live productieomgeving.

10.4: Debug helpers

Met debug: true in phlo_app(...) activeert Phlo een set helpers voor inspectie tijdens de ontwikkeling. In productie zijn ze inert.

Helper Doel Gedrag
d(...$args) Waarden dumpen in de respons, doorgaan met uitvoeren Verzameld in %res->dump; weergegeven in de browserconsole aan het einde van de aanvraag. Inert zonder debug: true
dx(...$args) Dump + STOP Sync: volledige debugpagina met het source-mapped .phlo bestand en regel. Async/CLI/streaming: de dump arriveert in de browserconsole via de apply payload. Worker-safe: gooit in plaats van die() aan te roepen
debug($msg) Voeg een regel toe aan het debuglog; debug() zonder argumenten retourneert alles wat is verzameld Gelogd in de browserconsole met de aanvraagstatistieken
error($msg, $code = 500) Runtime-fout voor de Phlo-exceptiehandler Gooit een PhloException, gelogd in data/errors.json
trace($node, $args) Handmatige traceer gebeurtenis (alleen actief met trace: true) Voegt een gebeurtenis toe aan het tracelog, zie het Trace-hoofdstuk

De levenscyclus: helpers verzamelen tijdens de aanvraag (%res->dump, %res->debug); aan het einde van een sync-pagina logt een inline script alles naar de browserconsole samen met geheugen, duur en trace metadata, en async reacties dragen dezelfde gegevens in hun apply payload. Objecten worden uitgepakt via objInfo(). Runtime-fouten accumuleren in data/errors.json (bericht, source-mapped bestand en regel, aantal, laatste optreden); lees ze met reflect::errors of in het Phlo Control Center.

method buildReport {
    $data = $this->load
    debug('loaded', count: count($data))
    if (!$data) error('No data to report')
    dx($data[0])
}

dx() is je primaire "stop en kijk naar wat er is" tool tijdens de ontwikkeling. Vergeet je een dx() in de code die naar release gaat? In debug: false modus gedraagt het zich net als error(), geen stille doorgang.

10.5: Workflow

In een ontwikkelomgeving plaatst het Phlo Control Center (op /phlo) deze hele lus in de browser: source, build, release en fouten, met elk bestand één klik verwijderd:

De Phlo Control Center source view: elk .phlo-bestand gemarkeerd en doorzoekbaar, één klik van build, release en fouten

  1. Lees eerst de source en de reflection output.
  2. Wijzig alleen .phlo, data/app.json of entrypoints.
  3. Voer build::run uit.
  4. Voer build::lint uit.
  5. Test de relevante HTTP routes.
  6. Voer build::release uit wanneer de stage/release output moet worden bijgewerkt.

10.6: Ontwikkeling, staging en productie

Dev heeft doorgaans:

auth: true,
build: true,
debug: true,

In build+debug-modus bevindt de ingebouwde controle UI zich standaard op /phlo; gebruik control: 'path' in phlo_app(...) om een ander pad te kiezen. Stage/productie draait doorgaans zonder build en zonder debug. De webroot wijst naar release/www/.

10.7: KOP en async

De huidige runtime ondersteunt de normale HTTP-methoden, inclusief HEAD. Async verzoeken worden afgehandeld door de frontend resource en gebruiken dezelfde routes als sync verzoeken, tenzij je expliciet een andere route declareert.

We gebruiken essentiële cookies om deze site te laten werken. Met uw toestemming gebruiken we ook analytics om de site te verbeteren.