وقت تشغيل WebAssembly كامل وناضج لـ PHP استنادًا إلى Wasmer.
سهلة الاستخدام : تحاكي واجهة برمجة تطبيقات wasmer
واجهة برمجة تطبيقات WebAssembly C القياسية،
سريع : يقوم wasmer
بتنفيذ وحدات WebAssembly بأسرع ما يمكن، بالقرب من السرعة الأصلية ،
آمنة : ستكون جميع الاستدعاءات إلى WebAssembly سريعة، ولكن الأهم من ذلك أنها آمنة تمامًا ومحمية.
لتثبيت المكتبة، اتبع الطريقة الكلاسيكية:
استنساخ بوابة https://github.com/wasmerio/wasmer-phpcd Wasmer-php/ext com.phpize ./configure --enable-wasmer يصنع إجراء تثبيت testmake
ملحوظة: Wasmer لا يعمل على نظام Windows حتى الآن.
<?php أعلن(strict_types=1);$engine = Wasm_engine_new();$store = Wasm_store_new($engine);$wasm = file_get_contents(__DIR__ . DIRECTORY_SEPARATOR . 'hello.wasm');$module = Wasm_module_new($store, $wasm); الدالة hello_callback() {echo 'Calling خلف...' . PHP_EOL;echo '> أهلاً بالعالم!' . PHP_EOL؛ إرجاع فارغ؛ }$functype = Wasm_functype_new(new WasmVecValType(), new WasmVecValType());$func = Wasm_func_new($store, $functype, 'hello_callback');wasm_functype_delete($functype);$extern = Wasm_func_as_extern($func);$externs = جديد WasmVecExtern([$extern]);$instance = Wasm_instance_new($store, $module, $externs);wasm_func_delete($func);$exports = Wasm_instance_exports($instance);$run = Wasm_extern_as_func($exports[0]);wasm_module_delete($module);wasm_instance_delete($instance);$results = Wasm_func_call($run, new WasmVecVal());wasm_store_delete($store);wasm_engine_delete($engine);
<?phpdeclare(strict_types=1);use Wasm;require_once __DIR__.'/../vendor/autoload.php';$engine = WasmEngine::new();$store = WasmStore::new($engine);$ وسم = file_get_contents(__DIR__.DIRECTORY_SEPARATOR.'hello.wasm');$module = WasmModule::new($store, $wasm);وظيفة hello_callback() {echo 'معاودة الاتصال...'.PHP_EOL;echo '> أهلاً بالعالم!'.PHP_EOL;return null; }$functype = WasmFunctype::new(new WasmVecValType(), new WasmVecValType());$func = WasmModuleFunc::new($store, $functype, 'hello_callback');$extern = $func->asExtern(); $externs = جديد WasmVecExtern([$extern->inner()]);$instance = WasmModuleInstance::new($store, $module, $externs);$exports = $instance->exports();$run = $exports[0]->asFunc();$args = new WasmVecVal();$results = $تشغيل($args);
يغطي هذا المثال حالة استخدام Wasm الأساسية: نأخذ وحدة Wasm (في نموذج تمثيل النص الخاص بها)، وننشئ مثيلًا منها، ونحصل على دالة مُصدَّرة ونقوم بتشغيلها.
يمكنك الاطلاع على المزيد من الأمثلة المتقدمة في الأدلة المخصصة:
واجهة برمجة التطبيقات الإجرائية
واجهة برمجة التطبيقات الموجهة للكائنات
منصة | بنيان | حالة |
---|---|---|
لينكس | amd64 | |
لينكس | aarch64 | |
ويندوز | amd64 | |
داروين | amd64 | |
داروين | aarch64 |
PHP | حالة |
---|---|
8.0 | |
7.4 | |
7.3 |
مترجم | حالة |
---|---|
رافعة رافعة | |
LLVM | |
تمريرة فردية |
محرك | حالة |
---|---|
محلي | |
جيت | |
ملف الكائن |
هدف | حالة |
---|---|
التكوين | |
محرك | |
محل |
يكتب | حالة |
---|---|
valtype | |
functype | |
globaltype | |
نوع الطاولة | |
نوع الذاكرة | |
النوع الخارجي | |
importtype | |
com.exporttype |
هدف | حالة |
---|---|
فال | |
إطار | |
فخ | |
أجنبي | |
وحدة | |
func | |
عالمي | |
طاولة | |
ذاكرة | |
خارجي | |
مثال |
ميزة | حالة |
---|---|
وات | |
واسي | |
تجميع الصليب |
المشروع بأكمله تحت رخصة MIT. يرجى قراءة ملف LICENSE
.