无需编写扩展即可在 PHP 中使用 C/C++ 代码

问题描述 投票:0回答:6

我读到可以通过编写扩展在 PHP 中使用 C/C++ 代码。有没有更简单的方法,比如包装魔术之类的东西(我必须说,我听说过这个词,但不太了解包装器是什么)。

php c++ c php-extension
6个回答
5
投票

编译一个 php 扩展并不难。有一些 API 需要学习,就像 C 程序有 main 函数以及如何将变量传递给 main 函数一样。


5
投票

不,没有。

PHP 解析 PHP 而不是 C 或其后代,如 C++

如果你想在 php 中包含 C 代码,就像一些用 C 编写的函数,那么它必须在扩展中调用并且必须被编译。

包装器是代码周围的代码。您使用的大多数语言(如 Delphi、Vb 等)都创建了本地代码,然后调用外部 API 函数,并在此过程中处理所需的任何类型转换或参数修复。


4
投票

在同类中,tcc 可以用作 C 解释器。您可以安装它,然后从 PHP 向它发送一个 C 程序 :)

$output = `echo -e '#include <stdio.h>\nint main(void) { printf("Hello, World!\\n"); return 0;}' | tcc -run -`;

3
投票

不可能在 PHP 代码中编写 C 或 C++。唯一的方法是为 PHP 编写扩展。或者,您可以查看 HipHop-PHP,它将任何 PHP 代码转换为高度优化的 C++ 代码(由 Facebook 开发)。


1
投票

根据你想做什么,你可以将你的代码编译成一个可执行文件,然后在 php 中启动它,例如通过 exec-function.

如果这还不够,恐怕您将不得不考虑创建一个扩展——但如果您已经了解 C 或 C++,那并不像听起来那么难。


0
投票

备案:
是的,你可以,使用 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!
© www.soinside.com 2019 - 2024. All rights reserved.