PHP-CPP 调用PHP原生函数

最近一直忙于面试,就没有多少时间写博客。今天继续写关于PHP-CPP相关的内容。

官网文档地址:http://www.php-cpp.com/documentation/calling-functions-and-methods


调用php函数格式

Php::Value data = Php::call("some_function", "some_parameter");

可以看到是通过一个Php:call的函数实现的,这个函数的定义如下:

/**
 *  Call a function in PHP
 *  @param  name        Name of the function to call
 *  @param  params      Variable number of parameters
 *  @return Value
 */
template <typename ...Params>
Value call(const char *name, Params&&... params)
{
    // the name can be turned into a Php::Value object, which implements
    // the operator () method to call it
    Value function(name);
    // invoke the operator ()
    return function(std::forward<Params>(params)...);
}


第一个参数:调用函数的名称

第二个参数:调用函数的参数

函数返回值:返回一个Value类型的数值


调用函数例子

Php::Value cpp_print_r(Php::Parameters &params)
    {
        Php::Value data = Php::call("print_r",params[0]);
        return data;
    }


调用对象/类(情况1)

// create an object (this will also call __construct())   
Php::Object time("DateTime", "now");      // call a method on the datetime object  
Php::out << time.call("format", "Y-m-d H:i:s") << std::endl;


通过Php:object对象。格式:Php:object 对象名(“类名”,construct默认参数)。这里为什么传入一个now可能大家没有注意,可以看php手册。

public __construct ([ string $time = "now" [, DateTimeZone $timezone = NULL ]] )

从这里可以看出实际第一句话的object对象是construct的实现。而construct实际是返回你的对象上下文的。所以第一条是通过construct创建一个datetime类返回给了time。然后time可以继续用call方法调用datatime类里面的方法。

调用对象/类(情况2)

// in PHP it is possible to create an array with two parameters, the first    
// parameter being an object, and the second parameter should be the name    
// of the method, we can do that in PHP-CPP too     
Php::Array time_format({time, "format"});      // call the method that is stored in the array     
Php::out << time_format("Y-m-d H:i:s") << std::endl;

上述这种方法实际与第一种方法类似,只不过是把object对象和要调用的函数全部放入数组了。


PHP-CPP 调用PHP原生函数


本站如无特别说明即为原创,转而告知:(http://iwonmo.com/archives/1324.html)

标签: php-cpp, php-cpp 调用php函数, php函数调用

添加新评论