我读到可以通过编写扩展在 PHP 中使用 C/C++ 代码。有没有更简单的方法,比如包装魔术之类的东西(我必须说,我听说过这个词,但不太了解包装器是什么)。
编译一个 php 扩展并不难。有一些 API 需要学习,就像 C 程序有 main 函数以及如何将变量传递给 main 函数一样。
不,没有。
PHP 解析 PHP 而不是 C 或其后代,如 C++
如果你想在 php 中包含 C 代码,就像一些用 C 编写的函数,那么它必须在扩展中调用并且必须被编译。
包装器是代码周围的代码。您使用的大多数语言(如 Delphi、Vb 等)都创建了本地代码,然后调用外部 API 函数,并在此过程中处理所需的任何类型转换或参数修复。
在同类中,tcc 可以用作 C 解释器。您可以安装它,然后从 PHP 向它发送一个 C 程序 :)
$output = `echo -e '#include <stdio.h>\nint main(void) { printf("Hello, World!\\n"); return 0;}' | tcc -run -`;
不可能在 PHP 代码中编写 C 或 C++。唯一的方法是为 PHP 编写扩展。或者,您可以查看 HipHop-PHP,它将任何 PHP 代码转换为高度优化的 C++ 代码(由 Facebook 开发)。
根据你想做什么,你可以将你的代码编译成一个可执行文件,然后在 php 中启动它,例如通过 exec-function.
如果这还不够,恐怕您将不得不考虑创建一个扩展——但如果您已经了解 C 或 C++,那并不像听起来那么难。
备案:
是的,你可以,使用 FFI 扩展:
<?php
// create FFI object, loading libc and exporting function printf()
$ffi = FFI::cdef(
"int printf(const char *format, ...);", // this is a regular C declaration
"libc.so.6");
// call C's printf()
$ffi->printf("Hello %s!\n", "world");
?>
它会回来
Hello world!