PHP-CPP是一個用於開發PHP擴展的C++庫。本節講解如何在C++中調用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 ¶ms){ 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)
,不按期爲您呈現技術乾貨。對象