Koostalitlus
Phasis töötab teie rakendusega samas protsessis PHP, seega liiguvad väärtused PHP ja JavaScript vahel ilma JSON, torude või teise käituskeskkonnata. Need liiguvad teisendamise teel: skalaarid teisendatakse JS primitiivväärtusteks, massiivid PHP kopeeritakse uuteks JS massiivideks ja objektideks ning tulemused JS kopeeritakse tagasi massiividesse PHP. Muudatused, mida JS teeb teisendatud massiivis, pole massiivis PHP nähtavad. Erandiks on PHP funktsioonid, mis jäävad elavaks: neist saavad funktsioonid JS, mis kutsuvad otse PHP-i.
See jaotis kirjeldab reegleid.
Lehed
- Väärtused — teisendustabelid mõlemas suunas: arvud, stringid, tõeväärtused, null/undefined, massiivid, objektid ja väärtused, mida ei saa teisendada.
- Host-funktsioonid — siduge PHP
callableJS funktsioonina$engine->setGlobal()kaudu. Argumentide teisendamine, tagastusväärtused ja erandite käitumine. - Jagatud objektid — mis juhtub, kui annate PHP objekti JS-le (see jõuab kohale kujul
undefined), ning kuidas jagada PHP olekut ja käitumist hoopis massiivide ja sulunditega. - Fetchi transport — vahetage vaikimisi
ext-curlHTTP taustaprogramm Guzzle, Symfony HttpClient, mocki või kõike keelava variandi vastu. Lisaks poliitikakonks lubatud loendi, päiste lisamise ja rentnikupõhise sidumise jaoks. - Küpsiste purk — paigaldage
get(url)/set(url, header)purk küpsiste säilitamiseks fetch-päringute vahel. Mälusisene, Symfony BrowserKit või JS-poolneMap. - AbortControlleri mustrid — ajalõpp, võidujooks, levitamine,
AbortSignal.any/.timeoutning kuidas kohandatud PHP transport signaali ülekande ajal kontrollib.
Kiire näide
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
Vt ka
- API viide — kogu
Phasis\Engineliides. - Veebi API-d — Web Platform Pack ja Fetch Pack kasutavad sama koostalitluskihti.