亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

用C++開(kāi)發(fā)PHP擴(kuò)展

flybywind / 877人閱讀

摘要:常規(guī)的擴(kuò)展開(kāi)發(fā)流程我再別的文章里面已經(jīng)介紹過(guò)了,這里不再贅述,只介紹一下開(kāi)發(fā)擴(kuò)展的不同之處。剩下的代碼自己用自由發(fā)揮吧。

由于PHP的底層就是C開(kāi)發(fā)的,不可避免的常用PHP擴(kuò)展也都是C開(kāi)發(fā)的,但是有時(shí)我們想用C++來(lái)開(kāi)發(fā)可以嗎,答案當(dāng)然是可以的,并且有它自己的優(yōu)勢(shì),第一可以方便地面向?qū)ο缶幊蹋诙梢岳矛F(xiàn)有C++編譯的動(dòng)態(tài)鏈接庫(kù)。

常規(guī)的PHP擴(kuò)展開(kāi)發(fā)流程我再別的文章里面已經(jīng)介紹過(guò)了,這里不再贅述,只介紹一下C++開(kāi)發(fā)PHP擴(kuò)展的不同之處。

修改config.m4

利用ext_skel工具生成擴(kuò)展的基礎(chǔ)框架,默認(rèn)生成的框架是針對(duì)C的,所以針對(duì)C++修改config.m4文件
config.m4文件是編譯基礎(chǔ)中最核心的文件,這個(gè)文件主要是用autoconf來(lái)產(chǎn)生configure配置文件,繼而自動(dòng)生成大家所熟悉的Makefile文件。需要注意的是,每次修改config.m4,需要phpize --clean,再重新phpize

PHP_ARG_WITH(dict, for hsdt support,
Make sure that the comment is aligned:
[  --with-demo             Include demo support])

表示demo擴(kuò)展需要依賴(lài)外部動(dòng)態(tài)鏈接庫(kù),在configure的時(shí)候 --with-demo的參數(shù)表示依賴(lài)外部動(dòng)態(tài)鏈接庫(kù)的路徑,比如編譯PHP時(shí)使用的--with-curl=/usr/local/libcurl表示依賴(lài)的libcurl.so的路徑在/usr/local/libcurl里面

PHP_ADD_INCLUDE($DEMO_DIR/include)

表示依賴(lài)的外部動(dòng)態(tài)鏈接庫(kù)的include的頭文件的路徑

PHP_REQUIRE_CXX()

表示這個(gè)擴(kuò)展使用C++

PHP_SUBST(DEMO_SHARED_LIBADD)

用于說(shuō)明這個(gè)擴(kuò)展編譯成動(dòng)態(tài)鏈接庫(kù)的形式

PHP_ADD_LIBRARY(stdc++, 1, DEMO_SHARED_LIBADD)

用于將標(biāo)準(zhǔn)C++庫(kù)加入擴(kuò)展

PHP_ADD_LIBRARY_WITH_PATH($LIBNAME, $DICT_DIR/lib64, DICT_SHARED_LIBADD)

用于將依賴(lài)的外部動(dòng)態(tài)鏈接庫(kù)加入擴(kuò)展

PHP_NEW_EXTENSION(demo, 
    xxx.cpp yyy.cpp zzz.cpp,
    $ext_shared,, 
    -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1)

第2行指定哪些源文件需要編譯,中間用空格間隔

修改源文件

包括.h文件和.cpp文件,因?yàn)镻HP提供的ZEND API都是C編寫(xiě)的,所以在include的時(shí)候需要在外面加一層extern "C",目的是把一些C寫(xiě)的庫(kù)或宏用兼容的方式給解決。剩下的代碼自己用C++自由發(fā)揮吧。

extern "C" {
  #ifdef ZTS
  #include "TSRM.h"
  #endif
}
extern "C" {
  #ifdef HAVE_CONFIG_H
  #include "config.h"
  #endif
  #include "php.h"
  #include "php_ini.h"
  #include "ext/standard/info.h"
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/30340.html

相關(guān)文章

  • PHP擴(kuò)展開(kāi)發(fā)教程1 - 相關(guān)開(kāi)發(fā)技術(shù)對(duì)比及介紹

    摘要:四使用語(yǔ)言開(kāi)發(fā)是我重點(diǎn)推薦的擴(kuò)展開(kāi)發(fā)框架,簡(jiǎn)明易懂,功能強(qiáng)大,開(kāi)發(fā)效率高,代碼易維護(hù),執(zhí)行速度快。優(yōu)點(diǎn)三支持,的擴(kuò)展開(kāi)發(fā)有兩套擴(kuò)展開(kāi)發(fā)框架,分別支持,,雖然框架代碼有兩個(gè),但是接口卻是一樣的。 PHP擴(kuò)展是高級(jí)PHP程序員必須了解的技能之一,對(duì)于一個(gè)初入門(mén)的PHP擴(kuò)展開(kāi)發(fā)者,怎么才能開(kāi)發(fā)一個(gè)成熟的擴(kuò)展,進(jìn)入PHP開(kāi)發(fā)的高級(jí)領(lǐng)域呢?本系列開(kāi)發(fā)教程將手把手帶您從入門(mén)進(jìn)入高級(jí)階段。本教程系列...

    alaege 評(píng)論0 收藏0
  • PHP擴(kuò)展開(kāi)發(fā)教程4 - 開(kāi)發(fā)我們自己的接口類(lèi)

    摘要:二擴(kuò)展類(lèi)的普通函數(shù)支持的樣式擴(kuò)展類(lèi)的函數(shù),必須按照一定的規(guī)范來(lái)寫(xiě),返回值和參數(shù)的名稱(chēng)類(lèi)型都是有規(guī)定。最常見(jiàn)的是下面種函數(shù)樣式,跟上一章的普通函數(shù)的樣式其實(shí)差不多,返回值和參數(shù)的用法也完全一樣,所以就不再多說(shuō)。 PHP擴(kuò)展是高級(jí)PHP程序員必須了解的技能之一,對(duì)于一個(gè)初入門(mén)的PHP擴(kuò)展開(kāi)發(fā)者,怎么才能開(kāi)發(fā)一個(gè)成熟的擴(kuò)展,進(jìn)入PHP開(kāi)發(fā)的高級(jí)領(lǐng)域呢?本系列開(kāi)發(fā)教程將手把手帶您從入門(mén)進(jìn)入高級(jí)...

    xiaodao 評(píng)論0 收藏0
  • C++ 開(kāi)發(fā) PHP 7 擴(kuò)展之原生函數(shù)定義

    摘要:第一步打開(kāi)項(xiàng)目下的文件,在文件中輸入我們的函數(shù)的原型聲明代碼。這行代碼注冊(cè)一個(gè)原型為的函數(shù),當(dāng)這個(gè)函數(shù)被執(zhí)行的時(shí)候,我們的函數(shù)將被運(yùn)行時(shí)調(diào)用。原文地址開(kāi)發(fā)擴(kuò)展之原生函數(shù)定義 在上一篇中我們?cè)趆ellozapi擴(kuò)展中我們定義了幾個(gè)常量,但是一個(gè)有用的擴(kuò)展,必須得有函數(shù),沒(méi)有函數(shù)的擴(kuò)展啥用沒(méi)有,如果您覺(jué)得定義函數(shù)很難的話(huà),您又錯(cuò)了,zendAPI就是為了讓您生活變得美好而生的,而不會(huì)讓事情...

    asce1885 評(píng)論0 收藏0
  • PHP擴(kuò)展開(kāi)發(fā)教程5 - 擴(kuò)展函數(shù)的參數(shù)類(lèi)型(1)

    摘要:前面兩節(jié)介紹了如何用編寫(xiě)常用的擴(kuò)展函數(shù),擴(kuò)展類(lèi)。對(duì)怎么使用開(kāi)發(fā)擴(kuò)展應(yīng)該已經(jīng)很熟悉了,下面晉級(jí)學(xué)習(xí)一下關(guān)于擴(kuò)展函數(shù)參數(shù)類(lèi)型方面的內(nèi)容。 PHP擴(kuò)展是高級(jí)PHP程序員必須了解的技能之一,對(duì)于一個(gè)初入門(mén)的PHP擴(kuò)展開(kāi)發(fā)者,怎么才能開(kāi)發(fā)一個(gè)成熟的擴(kuò)展,進(jìn)入PHP開(kāi)發(fā)的高級(jí)領(lǐng)域呢?本系列開(kāi)發(fā)教程將手把手帶您從入門(mén)進(jìn)入高級(jí)階段。本教程系列在linux下面開(kāi)發(fā)(推薦使用centos),php版本用的...

    DoINsiSt 評(píng)論0 收藏0
  • C++ 開(kāi)發(fā) PHP 7 擴(kuò)展之模塊入口定義

    摘要:每一個(gè)擴(kuò)展必須有一個(gè)描述對(duì)象,在中我們類(lèi)主要的作用主要完成這個(gè)功能。表示我們擴(kuò)展導(dǎo)出符號(hào)給其他庫(kù)使用。文章使用的編程文檔的引用連接參考手冊(cè)參考手冊(cè)原文鏈接開(kāi)發(fā)擴(kuò)展之模塊入口定義 zendAPI 項(xiàng)目不提供任何底層的功能,只是封裝了 zend engine 提供的功能,對(duì)上提供一個(gè)易用的編程接口。這篇文章中,我們將介紹 C++ 世界與 C 世界交匯的地方,在這里也是 zendAPI 的接...

    dabai 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<