Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Zephir是否可以包含一个外部库?_Php_C_Zephir - Fatal编程技术网

Php Zephir是否可以包含一个外部库?

Php Zephir是否可以包含一个外部库?,php,c,zephir,Php,C,Zephir,我有一些C语言的代码,可以访问一些硬件。这段代码已经准备好并经过良好测试。现在我想实现一个web界面来控制这个硬件。所以我和Zephir一起开发PHP扩展 我的问题是,“Zephir是否有可能包括一个外部库resp。如果可能的话,我该怎么做?是的,这是可能的,使用C代码有两种方法 通过在CBLOCKs中包装C代码 您可以在标记中嵌入c代码,如下所示:%{//c-code}% 此功能未记录,但存在于测试中 %{ //包括标题 #包括“headers/functions.h” //fibonac

我有一些C语言的代码,可以访问一些硬件。这段代码已经准备好并经过良好测试。现在我想实现一个web界面来控制这个硬件。所以我和Zephir一起开发PHP扩展


我的问题是,“Zephir是否有可能包括一个外部库resp。如果可能的话,我该怎么做?

是的,这是可能的,使用C代码有两种方法

通过在CBLOCKs中包装C代码

您可以在标记中嵌入c代码,如下所示:
%{//c-code}%

此功能未记录,但存在于测试中

%{
//包括标题
#包括“headers/functions.h”
//fibonacci的c实现
静态长斐波那契(长n){
如果(n<2)返回n;
否则返回fibonacci(n-2)+fibonacci(n-1);
}
}%
看起来有点难看,但很管用,)有点优雅,但也很管用,是自定义优化器:

通过编写自定义优化器

“优化器”的工作原理类似于函数调用的拦截器 “optimizer”将PHP用户区中的函数调用替换为 更快、开销更低的直接C呼叫 表演

可以编写一个带有干净接口的优化器,允许Zephir知道传递给C函数的参数类型和返回的数据类型

手册:


示例(调用fibonacci c-func):

你是Zephir的人吗?你在项目中使用它吗?更像是一个关注社区趋势的全能PHP人。特别是像Phalcon和YAF这样的面向性能的扩展引起了我的注意。我已经将Phalcon作为默认扩展添加到我的堆栈中。
%{
    // include a header
    #include "headers/functions.h"

    // c implementation of fibonacci
    static long fibonacci(long n) {
        if (n < 2) return n;
        else return fibonacci(n - 2) + fibonacci(n - 1);
    }

}%