PHP CPP開發擴充套件(二)

2021-09-07 19:19:17 字數 1738 閱讀 7344

php-cpp是乙個用於開發php擴充套件的c++庫。本節講解php輸出和函式的實現。

上面的helloworld示例裡,我們使用php::out進行輸出,並使用了std::endl換行重新整理緩衝。php::out變數其實是std::ostream類的乙個例項,支援php中設定的所有輸出緩衝。它與php指令碼中的echo()函式基本相同。

幾個常用的方法說明:

對於錯誤,通知和警告,我們不需要換行符,但我們仍然必須重新整理緩衝區以實際生成輸出。php::error流有一些非常特殊的東西:當你重新整理它時,php指令碼以致命錯誤結束。

有了上面的幾個方法,我們就可以實現php的標準輸出功能。

使用輸出必須引入iostream標頭檔案。

上面的示例裡其實我們已經實現了2個php函式。接下來,我們看看php-cpp如何實現以下4種函式:

得益於php-cpp封裝的php::valuephp::parameters類,我們可以很簡單的實現上面這些函式。

php::value可以認為是php的變數,內部封裝了zval結構。通過對運算子的過載,c++裡的變數支援自動轉為php::value型別。

1、無形參無返回值

void func(){}
2、無形參有返回值

php::value func(){}
3、有形參無返回值

void func(php::parameters ¶ms){}
4、有形參有返回值

php::value func(php::parameters ¶ms){}
示例:

/**

* date: 2018/7

*/php::value sum_n(php::parameters ¶ms)

max = params[0];

if(params[0].type() != php::type::numeric)

for(int i = 1; i <= max; i++)

return sum;

}

該函式實現了有形參有返回值,其他幾種改改就可以實現。函式裡雖然返回的是c++的int型別變數,但是php::value會自動轉為php語言型別變數。

我們只需要在get_module()裡註冊一下:

extension.add("sum_n");
tips: 最終暴露出來的函式名可以與c++裡函式名不同,例如:

extension.add("sum_n2");
也是可以的。

重新編譯即可:

$ sudo make clean && make && sudo make install
(未完待續)

想第一時間獲取最新動態,歡迎關注關注飛鴻影的部落格(fhyblog),不定期為您呈現技術乾貨。

PHP CPP開發擴充套件(三)

php cpp是乙個用於開發php擴充套件的c 庫。本節講解php函式形參相關的實現。有時候,我們需要指定函式的形參是陣列或者指定的,那麼在php cpp裡是否可以指定函式的引數型別呢?答案是可以的。示例 date 2018 7 include void example php parameters...

PHP CPP開發擴充套件(三)

php cpp是乙個用於開發php擴充套件的c 庫。本節講解php函式形參相關的實現。有時候,我們需要指定函式的形參是陣列或者指定的,那麼在php cpp裡是否可以指定函式的引數型別呢?答案是可以的。示例 date 2018 7 include void example php parameters...

開發php擴充套件

1.原始碼安裝php wget tar zxvf php 5.2.13.tar.gz cd php 5.2.13 configure prefix csdn verify auth php with config file path csdn verify auth php etc make zen...