如何在C中获得PHP标准函数?

如何在C中获得PHP标准函数?,php,c,Php,C,如何从C应用程序调用PHP函数 示例: include <php.h> int main() { return json_encode(""); // This is a PHP function coming from php.h } 包括 int main() { 返回json_encode(“”;//这是一个来自PHP.h的PHP函数 } 注意:PHP函数集合是非常有管理和组织的,我只想在我的C应用程序中有这种逻辑,所有的东西都是按需组织的。这就是我在PHP语言中发现

如何从C应用程序调用PHP函数

示例:

include <php.h>

int main()
{
  return json_encode(""); // This is a PHP function coming from php.h
}
包括
int main()
{
返回json_encode(“”;//这是一个来自PHP.h的PHP函数
}

注意:PHP函数集合是非常有管理和组织的,我只想在我的C应用程序中有这种逻辑,所有的东西都是按需组织的。这就是我在PHP语言中发现的美。

不,你不能。然而,你可以,也可能能够像这样编造一些东西,但这并不是真的有用。为什么要这样做?

因为C比PHP快,而且PHP是用C编写的,所以我认为尝试在C中使用PHP函数会使程序不必要地慢。我确信这是不可能的。

因为我今天也希望投反对票,所以我将尝试回答这个问题;)

我不知道你的要求是否可行。但我确信还有其他一些事情:

  • 结果将非常复杂,缓慢,并将导致许多依赖性和可移植性方面的问题
  • 如果你试图解释你为什么问这个问题,以及你想要达到的目标,你会得到更好的答案
  • PHP的主要部分是用C实现的,因此您在PHP中所做的一切也可以用C完成。关于这一点,这里有一些阅读
  • 学习C语言而不是想使用一些已知的PHP函数将为您打开新的视角,这只会提高您的编码技能
  • 您应该询问您是否真的想/必须使用C语言,或者是否最好使用其他高级语言
  • 如果您想用C解码JSON消息,请列出大量可以使用的标准的C实现。对于base64解码,请参见此示例

  • 你可以,事实上这是我心目中的一个项目。
    需要做的是获取PHP SPL代码,然后将其重写(稍微清理一下)以用作常规C库。

    我希望有一天能这样做。

    好吧,这不可能,也不太困难,会导致很多问题。由于PHP的主要部分是用C语言编写的,所以在C语言中没有什么是不能用库或语言功能来完成的。你为什么要这么做?为什么不直接使用PHP?如果没有一些疯狂的黑客攻击,你不应该能够-PHP扩展函数的定义方式与C中非常不同。要使用它们,你需要在PHP函数中插入ZVAL,为它们提供一个PHPy足够的环境,a.s.o.@jeremiahd:PHP函数有一个托管的编程概念/标准,比如快速推送以快速移动和愤怒。在C语言中,公共模式不存在(字符串/套接字等未管理),一切都需要从第1天开始构建。因此,如果我可以在纯C代码中导入PHP标准函数,我将只使用PHP函数,而不使用PHP解释器。@Abhinav Singh:它非常有组织的语言,不仅是函数集合的形状,而且是函数集合的美,比如使用js。我愿意有一个头文件,它可以让我不用涉及PHP解释器就可以用纯C实现。PHP不是“非常有管理和组织的”。没有命名约定、参数顺序约定或任何种类的约定。PHP标准函数库乱七八糟。对,所以如果您试图在C程序中使用PHP函数,并且这些函数必须经过解释器,那么它们的速度会较慢。为什么我被否决了?这不是不可能吗?@Corey不是我:)我认为PHP的“纯”C函数不应该通过解释器,只有PHP脚本应该通过解释器。但这只是猜测。-1因为这不是不可能的,过去人们已经在C中嵌入了PHP。@CanSpice没有对所有人进行否决,而是提供了一些源代码和示例;)他说他很确定。。。顺便说一句,有些东西的可行性并不意味着它是一个好主意。@CanSpice,绝对,那么回答这个问题,或者评论是你回答问题的方式,而没有人能够对你的答案进行“投票”?@Marie php.js是一些php函数在Javascript中的重新实现,这与你的问题无关。@Marie有很多C库处理JSON和base64相关的东西,看看我的答案,可以找到一些指针。还有很多功能可以使用套接字。像isset()这样的函数在C中没有多大意义。你应该问问自己,C语言是否适合你要实现的目标,如果是这样的话,试着真正学习它,而不是尝试使用PHP函数。@Marie那么你为什么要使用C而不是PHP?您还可以使用很多其他语言:Python、Java、etcphpjs是javascript中PHP子集的重新实现——这与您在这里要求的不同。“托管”函数在我看来不是一个有效的参数。不同语言的调用语义和一般组织是不同的。如果这对你来说是一个障碍,你应该考虑迁移到另一种语言。如果您想用PHP编写命令行程序,可以将PHP用作web服务器外部的常规解释器。底线。你为什么要这样做?对CanSpice:你能给我一些关于人们在哪里做过(和使用过)这件事的建议吗?@Marie我只有一个答案给你:使用PHP而不是C;)顺便说一句,正如我已经说过的,phpjs是Javascript的一个重新实现,这是一件完全不同的事情。@Marie:你在这个线程中键入的任何字符都不会产生任何影响sense@Matti维库宁:这个答案毫无意义,我希望马上有5万人投反对票。我认为作者不会说英语或不会阅读。有人问这个问题,把PHP到C的函数作为一个集合,按需使用它。