在最近的一个项目中,我真的需要 lib tre 匹配库。
但是该项目是在 php 中的,并且该库没有 php 绑定。
我试图用谷歌搜索如何为 c 库创建一个接口,但我发现的只是dl
接缝只加载 php 扩展的函数。
我错过了什么?
在最近的一个项目中,我真的需要 lib tre 匹配库。
但是该项目是在 php 中的,并且该库没有 php 绑定。
我试图用谷歌搜索如何为 c 库创建一个接口,但我发现的只是dl
接缝只加载 php 扩展的函数。
我错过了什么?
如果不存在“ php 绑定”,看起来您将不得不开发它们;-)
这是通过PHP 扩展完成的——例如:
如果您想了解有关编写 PHP 扩展的更多信息,这些链接可能会让您感兴趣:(
请注意,这不是一件容易的事——但如果您需要......好吧^^;有些人会说这并不难)
而且,如果你对这个主题真的很感兴趣,并准备花一些钱,你可以购买这本书扩展和嵌入 PHP (有些页面也可以在 Google Books 上预览);对这个主题感兴趣的时候可以考虑看书(其实我前段时间就买了,我觉得确实是一本有趣的书)
顺便说一句,那本书的作者也是我链接到的前四篇文章的作者;-)
编写一个将 tre 暴露给 PHP 的扩展(或找到一个已经这样做的扩展)。一个好的起点就在这里。
请注意,您将无法在大多数托管服务上加载您的扩展程序。
自 PHP 7.4 起,扩展FFI(外部函数接口)被捆绑,但默认禁用。
应该注意的是,在撰写本文时,该扩展仍然被认为是实验性的,即它的界面可能会更改,恕不另行通知。
调用 libc 的printf()
:
$ffi = FFI::cdef('int printf(const char *format, ...);', 'libc.so.6');
$ffi->printf('It %s!%s', 'works', PHP_EOL);
默认情况下,FFI 仅适用于 PHP 的 CLI SAPI。对于 FPM 等其他 SAPI,有以下选项:
ffi.enable
为true
(慢)。