Propojení
Phasis běží ve stejném procesu PHP jako vaše aplikace, takže hodnoty přecházejí mezi PHP a JavaScript bez JSON, rour nebo druhého běhového prostředí. Přecházejí prostřednictvím převodu: skaláry se mapují na primitivní hodnoty JS, pole PHP se kopírují do nových polí a objektů JS a výsledky JS se kopírují zpět do polí PHP. Změna, kterou JS provede v převedeném poli, se v poli PHP neprojeví. Výjimkou jsou volatelné objekty PHP, které zůstávají živé: stanou se funkcemi JS, jež volají přímo do PHP.
Tato část popisuje pravidla.
Stránky
- Hodnoty — tabulky převodu oběma směry: čísla, řetězce, logické hodnoty, null/undefined, pole, objekty a hodnoty, které převést nelze.
- Hostitelské funkce — navázání PHP
callablejako funkce JS pomocí$engine->setGlobal(). Převod argumentů, návratové hodnoty a chování výjimek. - Sdílené objekty — co se dnes stane, když předáte objekt PHP do JS (převede se na
undefined) a jak zpřístupnit stav a chování PHP pomocí polí a uzávěrů. - Fetch transport — nahrazení výchozího backendu
ext-curlHTTP za Guzzle, Symfony HttpClient, mock nebo úplné zamítnutí. Také háček pro pravidla povolených položek, vkládání hlaviček a vazby pro jednotlivé tenanty. - Úložiště cookies — připojení úložiště
get(url)/set(url, header)pro uchovávání cookies mezi požadavky fetch. V paměti, Symfony BrowserKit nebo JSMap. - Vzory AbortController — časový limit, závod, předávání signálu,
AbortSignal.any/.timeouta způsob, jakým vlastní transport PHP kontroluje signál během přenosu.
Rychlý příklad
PHP
$engine = new Phasis\Engine();
// 1. Bind a PHP callable as a JS function
$engine->setGlobal('greet', fn (string $name) => "Hello, $name!");
echo $engine->eval('greet("world")'); // → Hello, world!
// 2. Let JS change PHP state through a closure
$total = 0;
$engine->setGlobal('add', function (int $n) use (&$total): void { $total += $n; });
$engine->eval('add(2); add(3)');
echo $total; // → 5
// 3. Call a JS function from PHP
$engine->eval('function add(a, b) { return a + b; }');
echo $engine->call('add', 2, 3); // → 5
Viz také
- Reference API — kompletní rozhraní
Phasis\Engine. - Webová rozhraní — Web Platform Pack a Fetch Pack využívají stejnou vrstvu propojení.