PHP-CPP開發擴展(四)

PHP-CPP是一個用於開發PHP擴展的C++庫。本節講解如何在C++中調用PHP函數。php

調用PHP函數

調用普通函數函數

// call a function from user space
Php::Value data = Php::call("some_function", "some_parameter");

調用類裏方法:測試

// 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;

下面經過一個綜合示例來講明:this

/**
 * User: 公衆號: 飛鴻影的博客(fhyblog)
 * Date: 2018/7
 */

#include <phpcpp.h>

void test_call(Php::Parameters &params){

    Php::Value v;

    //調用普通方法
    v = Php::call("md5", "test");
    Php::out << v << std::endl;

    //實例化PHP類並調用類裏的方法
    Php::Object time("Datetime", "now");
    v = time.call("format", "Y-m-d H:i:s");
    Php::out << v << std::endl;

    //形參是PHP類,調用其方法
    Php::Value datetime = params[0];
    v = datetime.call("format", "Y-m-d");
    Php::out << v << std::endl;

    //形參是匿名函數
    Php::Value callback = params[1];
    callback("param1", "param2");

    //給已知對象的成員方法起別名
    Php::Array format_alias({datetime, "format"});
    Php::out << format_alias("Y-m-d H") << std::endl;

    //普通方法別名
    Php::Value time_alias("time");
    Php::out << time_alias() << std::endl;
}

extern "C" {
    PHPCPP_EXPORT void *get_module() {
        static Php::Extension extension("helloworld", "1.0.0");
        extension.add<test_call>("test_call");
        
        return extension;
    }
}

咱們使用test.php進行測試:spa

<?php
test_call(new DateTime(), function($a, $b){
    var_dump($a, $b);
});

輸出:code

098f6bcd4621d373cade4e832627b4f6
2018-07-15 09:43:23
2018-07-15
string(6) "param1"
string(6) "param2"
2018-07-15 09
1531619003

(未完待續)orm

想第一時間獲取最新動態,歡迎關注關注飛鴻影的博客(fhyblog),不按期爲您呈現技術乾貨。對象

相關文章
相關標籤/搜索