国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP擴展開發(fā)教程2 - 編寫第一個擴展 hello world

Berwin / 810人閱讀

摘要:二下載第一個擴展第一個擴展的源碼已經(jīng)在上準備好了,直接用命令克隆,或者手工下載都可以。第四步確認擴展已經(jīng)安裝成功使用命令可以查看目前已經(jīng)安裝的所有擴展。

PHP擴展是高級PHP程序員必須了解的技能之一,對于一個初入門的PHP擴展開發(fā)者,怎么才能開發(fā)一個成熟的擴展,進入PHP開發(fā)的高級領域呢?本系列開發(fā)教程將手把手帶您從入門進入高級階段。
本教程系列在linux下面開發(fā)(推薦使用centos),php版本用的是5.6,并假設您有一定的linux、git操作經(jīng)驗和c/c++基礎。
有問題需要溝通的朋友請加QQ技術交流群32550793和我溝通。

我們使用容易上手的PHP-CPP框架來開發(fā)PHP擴展,如果您有一定的linux操作經(jīng)驗和c++基礎,按照下面的步驟,相信用不了10分鐘就能做出屬于你自己的第一個擴展出來。
以下示范的操作都是在linux centos系統(tǒng)上完成的,并且已經(jīng)事先安裝了php5.6系列。

一、下載并安裝 PHP-CPP

要想使用PHP-CPP編譯屬于您自己的php擴展,需要先下載PHP-CPP的源碼并編譯安裝。
PHP-CPP有兩個框架源碼,分別叫 PHP-CPP(新版) 和 PHP-CPP-LEGACY。
PHP-CPP(新版)適合開發(fā)PHP-7的擴展,PHP-CPP-LEGACY則適合開發(fā)5.X系列的擴展,兩套框架的接口一樣,學會了其中一個就很容易做出兼容的PHP各版本的擴展出來。
下面我們的操作都以PHP-CPP-LEGACY為例。

如果你會git命令,可以直接在終端命令行敲入以下git命令即可。

# git clone https://github.com/CopernicaMarketingSoftware/PHP-CPP-LEGACY.git

如果不會git也沒關系,可以直接用瀏覽器打開該源碼的github倉庫網(wǎng)址,下載源碼壓縮包并解壓即可,倉庫網(wǎng)址是
https://github.com/CopernicaM...。

下載完成后,進入PHP-CPP-LEGACY的源碼目錄,敲入make命令編譯源碼,編譯完成后會生成開發(fā)擴展所需要的相關類庫。

# make

接著運行make install命令,把生成的類庫和相關開發(fā)的頭文件安裝到linux系統(tǒng)里面去,一會兒編譯擴展的時候就可以不用配置頭文件和類庫目錄也能自動連接上了。

# sudo make install
二、下載第一個擴展 helloworld

第一個擴展 helloworld 的源碼已經(jīng)在github上準備好了,直接用git命令克隆,或者手工下載都可以。

# git clone https://github.com/elvisszhang/phpcpp_helloworld.git

進入helloworld源碼目錄,打開main.cpp,可以看到如下代碼結(jié)構,已經(jīng)都給加了中文注釋。
其中最重要的就是 get_module 函數(shù),它是擴展的入口函數(shù)。

#include 
#include 

//這是PHP里面可以調(diào)用的接口函數(shù)
void say_hello()
{
    //輸出一段歡迎
    Php::out << "hello world from my first extension" << std::endl;
}

/**
 *  告訴編譯器get_module是個純C函數(shù)
 */
extern "C" {
    
    /**
     *  本函數(shù)在PHP進程一打開就會被訪問,并返回一個描述擴展信息的PHP結(jié)構指針
     */
    PHPCPP_EXPORT void *get_module() 
    {
        // 必須是static類型,因為擴展對象需要在PHP進程內(nèi)常駐內(nèi)存
        static Php::Extension extension("helloworld", "1.0.0");
        
        //這里可以添加你要暴露給PHP調(diào)用的函數(shù)
        extension.add("say_hello");
        
        // 返回擴展對象指針
        return extension;
    }
}

test.php則是擴展測試用的一段php代碼。


三、編譯第一個擴展 helloworld

編譯這個擴展很簡單,在終端命令行下輸入make命令即可。

# make
g++ -Wall -c -O2 -std=c++11 -fpic -o main.o main.cpp
g++ -shared -o helloworld.so main.o -lphpcpp

不出意料的話,就會在源碼目錄下看到 helloworld.so 這個擴展文件了,可以發(fā)現(xiàn)這個文件很小,才14K而已。
不過現(xiàn)在如果你敲一下命令 php -m ,發(fā)現(xiàn)php的模塊中并沒有 helloworld 這個擴展,因為我們還沒有把它安裝到php的運行環(huán)境里。

四、安裝第一個擴展 helloworld

我們這里暫時介紹手工安裝擴展的方式。

第一步: 先用php-config命令確定一下擴展存放的位置

# php-config --extension-dir
/usr/local/php56/lib/php/extensions/no-debug-non-zts-20131226

上面顯示的是我服務器上擴展安裝的位置,各人的服務器可能配置不一樣。

第二步:然后把 helloworld.so 拷貝到擴展存放目錄下。

# cp helloworld.so /usr/local/php56/lib/php/extensions/no-debug-non-zts-20131226/

第三步:修改 php.ini 文件,啟用 helloworld 擴展

打開 php.ini文件,加上以下配置項,在php.ini的任意地方新加一行即可。

extension = helloworld.so

第四步:確認 helloworld擴展已經(jīng)安裝成功

使用php -m命令可以查看php目前已經(jīng)安裝的所有擴展。

# php -m | grep helloworld
helloworld

從上面命令行的響應看,helloworld擴展已經(jīng)安裝成功了。

第五步:運行 test.php 確認注冊函數(shù)能使用

還是在擴展的源碼目錄,運行以下命令

# php test.php
hello world from my first extension

從上面命令行的響應看,我們通過擴展向php注冊的say_hello函數(shù)已經(jīng)成功運行了,是不是感覺很簡單,但現(xiàn)在的擴展只會打個招呼,還干不了什么正兒八經(jīng)的事,我們后面給他完善一下,讓他能做更多的事情。

參考文獻

PHP-CPP安裝以及hello world
PHP-CPP官網(wǎng)教程

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

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/28524.html

相關文章

  • PHP擴展開發(fā)教程1 - 相關開發(fā)技術對比及介紹

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

    alaege 評論0 收藏0
  • Zephir--最簡單的php擴展開發(fā)工具

    摘要:更多關于的技術文章的擴展是用語言編寫,是語言引擎,內(nèi)核。見提供了一種類似的高級語言語法的方式,來自動生成擴展的語言代碼,使編寫擴展變得非常的簡單。直接修改該文件的代碼,使用原擴展的編輯方法也是可以滴。 更多關于PHP的技術文章http://www.codefrom.com/ php的擴展是用c語言編寫,Zend是語言引擎,PHP內(nèi)核。在實際編寫php擴展的時候,需要使用大量的...

    dinfer 評論0 收藏0
  • 5分鐘PHP擴展開發(fā)快速入門

    摘要:簡單點,先來實現(xiàn)一個擴展的。接下來我們將使用它來生成我們的擴展的基本骨架。注意不要添加任何分號。有興趣的同學可以自行研究一下靜態(tài)編譯是什么鬼在擴展目錄中執(zhí)行命令。一定要在擴展的目錄執(zhí)行才有效,否則將得到一個錯誤提示。 簡單點,先來實現(xiàn)一個PHP擴展的hello world。注意,以下所有操作都是基于linux系統(tǒng)(推薦centos和ubuntu, Mac系統(tǒng)應該類似 ),PHP5.5以...

    RobinTang 評論0 收藏0
  • Zephir入門 —— Hello world

    摘要:概述是一個開源的用于簡化擴展的創(chuàng)建和維護的語言。它使得不擅長的開發(fā)人員也能寫出擴展。是縮寫,讀音為。然后我們在里調(diào)用方法正常的話會輸出。至此我們也完成了我們的第一個擴展。 概述 Zephir是一個開源的用于簡化PHP擴展的創(chuàng)建和維護的語言。它使得不擅長C/C++的PHP開發(fā)人員也能寫出PHP擴展。Zephir是Zend Engine/PHP/Intermediate縮寫,讀音為zep...

    Vicky 評論0 收藏0
  • PHP7擴展開發(fā)入門

    摘要:下載源代碼要開發(fā)擴展,需要先下載的源代碼,一方面是因為我們的擴展一般會用到自身定義的函數(shù)和宏,另一方面我們可以利用官方提供的工具減少工作量。重點關注,,即可,最簡單的場景下這三個文件就是一個擴展的全部組成部分了。 下載PHP源代碼 要開發(fā)PHP擴展,需要先下載PHP的源代碼,一方面是因為我們的擴展一般會用到PHP自身定義的函數(shù)和宏,另一方面我們可以利用官方提供的工具減少工作量。我下載了...

    ytwman 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<