PHP-CPP开发扩展(七)

PHP-CPP是一个用于开发PHP扩展的C++库。本节讲解一些杂项。

读取php.ini配置

从php.ini文件中读取设置就像从常规PHP脚本中获取这些设置一样简单。在PHP脚本中,我们可以使用内置的ini_get()函数从php.ini文件中读取设置,在C++扩展中使用Php::ini_get()函数。

void myFunction()
{
    // 读取 output_buffering 变量
    int output_buffering = Php::ini_get("output_buffering");

    // 读取 variables_order 变量
    std::string variables_order = Php::ini_get("variables_order");
}

如果需要动态注册配置,必须先使用Php::Ini进行注册:

extension.add(Php::Ini("my_extension.var1", "default-value"));
extension.add(Php::Ini("my_extension.var2", 12345));

然后才能调用Php::ini_get()来检索当前值。

命名空间

添加命名空间很简单,在C++看来,命名空间只不过是类或函数前缀。如果希望类或函数出现在特定的命名空间中,则只需在类或函数名称中添加前缀即可。

#include <phpcpp.h>

void myFunction()
{
}

extern "C" {
    PHPCPP_EXPORT void *get_module() {

        static Php::Extension extension("my_extension", "1.0");

        // 添加方法到命名空间 myNamespace
        extension.add<myFunction>("myNamespace\\myFunction");

        return extension;
    }
}

也可以在get_module()使用Php::Namespace来注册类和函数:

// 创建一个命名空间
Php::Namespace myNamespace("myNamespace");

// 添加方法到命名空间
myNamespace.add<myFunction>("myFunction");

// 注册命名空间
extension.add(std::move(myNamespace));

参考

1、嘉心嘉软 - SegmentFault 思否
https://segmentfault.com/blog/jrtk
2、A C++ library for developing PHP extensions | PHP-CPP
http://www.php-cpp.com/documentation/introduction

猜你喜欢

转载自www.cnblogs.com/52fhy/p/12398192.html