Pāriet uz saturu

Sadarbspēja

Phasis darbojas tajā pašā PHP procesā, kurā darbojas jūsu lietotne, tāpēc vērtības pārvietojas starp PHP un JavaScript bez JSON, caurulēm vai otras izpildvides. Tās tiek pārvietotas, veicot pārveidi: skalārie tipi tiek kartēti uz JS primitīviem tipiem, PHP masīvi tiek kopēti jaunos JS masīvos un objektos, bet JS rezultāti tiek kopēti atpakaļ uz PHP masīviem. JS veiktās izmaiņas pārveidotajā masīvā nav redzamas PHP masīvā. Izņēmums ir PHP izsaucamie objekti, kas paliek aktīvi: tie kļūst par JS funkcijām, kas izsauc PHP tieši.

Šajā sadaļā aplūkoti noteikumi.

Lapas

  • Vērtības — pārveides tabulas abos virzienos: skaitļi, virknes, Būla vērtības, null/undefined, masīvi, objekti un vērtības, kuras nevar pārveidot.
  • Resursdatora funkcijas — piesaistiet PHP callable kā JS funkciju, izmantojot $engine->setGlobal(). Argumentu pārveide, atgrieztās vērtības un izņēmumu apstrāde.
  • Koplietojami objekti — kas notiek, ja šodien nododat PHP objektu JS (tas tiek saņemts kā undefined), un kā atklāt PHP stāvokli un darbības, izmantojot masīvus un slēgtās funkcijas.
  • Fetch transports — aizstājiet noklusējuma ext-curl HTTP aizmugursistēmu ar Guzzle, Symfony HttpClient, testa aizstājēju vai visu bloķējošu transportu. Iekļauts arī politikas āķis atļauto saraksta veidošanai, galveņu ievietošanai un piesaistei katram nomniekam.
  • Sīkdatņu krātuve — pievienojiet get(url)/set(url, header) krātuvi, lai saglabātu sīkdatnes starp izgūšanas darbībām. Atmiņā, Symfony BrowserKit vai JS pusē esošā Map.
  • AbortController lietojuma paraugi — taimauts, sacensība, izplatīšana, AbortSignal.any / .timeout un tas, kā pielāgots PHP transports pārsūtīšanas laikā pārbauda signālu.

Īss piemērs

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

Skatiet arī

  • API atsauce — pilns Phasis\Engine iespēju klāsts.
  • Tīmekļa API — Web Platform Pack un Fetch Pack darbojas virs viena un tā paša sadarbspējas slāņa.