回覆列表
  • 1 # Summy薇

    PHP(“PHP: Hypertext Preprocessor”,超文字預處理器的字母縮寫)是一種被廣泛應用的開放原始碼的多用途指令碼語言,它可嵌入到 HTML中,尤其適合 web 開發。

    最初是1994年Rasmus Lerdorf建立,只是一個簡單的用Perl語言編寫的程式,後來用C語言重構,可以訪問資料庫,在1995年對外發表了第一個版本。

    程式設計範型是面向物件、指令式程式設計的語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛;其PHP獨特的語法混合了C、Java、Perl以及PHP自創的語法。

    簡單來說就是動態指令碼語言,開發網站、輕應用最好的一門弱型別、伺服器端語言;簡單靈活、輕量便捷,很是適合新手入門!

    在網站開發中,用於網頁資料互動、動態效果實現,且可以執行編譯後的程式碼,編譯還可以達到加密和最佳化程式碼執行,執行更加快速,大大的減少了系統資源的消耗。

    現在的資料庫以及作業系統PHP一般都支援,PHP可使用抽象層如“PDO”,或者過 ODBC 擴充套件連線到任何支援 ODBC 標準的資料庫。

    在這基礎上PHP還有一個強大的影象處理系統,CGI的功能PHP全部都能實現,它包含了命令列執行介面(command line interface),或者產生圖形使用者介面(GUI)程式。

    另外還有一個跨平臺的特性,可以執行在多平臺(如LINUX、UNIX、Mac OS、WINDOWS、Android等)。

    PHP程式碼屬於開源所以說完全可以免費下載使用,沒有成本。

  • 2 # 灬亦凡

    tep 1 =>

    php的擴充套件模組都放在 ext/ 目錄下,比如說 snmp模組、mysql模組。 我們要建立自己的模組,就要在ext目錄下為自己的模組建一個目錄。比如,我們要做一個分析config檔案的模組,命名為pconfig模組(parse config的簡寫),需在ext下建立目錄pconfig。將我寫好的7個檔案copy到該目錄下,另外需對主目錄下的configure和internal_functions.c作一些修改。

    Step 2 =>

    Makefile.am Makefile.in

    是模板檔案,使用者執行configure時,會呼叫這兩個檔案,生成編譯時所用的Makefile檔案。修改時將小寫的pconfig換成你自己的模組名,別忘了把大寫的PCONFIG也替換掉(不要告訴我你不會vi的替換語句)。config.m4也是執行configure將會呼叫的檢測指令碼程式,以後我們來討論這些指令碼程式的更深入的修改。現在你只需要把pconfig該成你的模組就可以了。對config.h.stub和setup.stub也如法炮製。其實setup.stub也沒什麼用。

    Step 3 =>

    php3-pconfig.h 標頭檔案中

    extern php3_module_entry pconfig_module_entry;

    #define pconfig_module_ptr &pconfig_module_entry

    #define phpext_pconfig_ptr pconfig_module_ptr

    這幾行定義了模組的入口,將入口註冊到php後,php會透過模組入口找到你寫的函式

    下面幾個函式定義是用宏進行定義的,展開以後其實就是 php3_minit_pconfig , php3_rinit_pconfig ……分別在你的模組初試化或結束時被呼叫,如果你的模組很簡單,也就不需要這些定義了

    extern PHP_MINIT_FUNCTION(pconfig);

    extern PHP_RINIT_FUNCTION(pconfig);

    extern PHP_MSHUTDOWN_FUNCTION(pconfig);

    PHP_MINFO_FUNCTION(pconfig);

    這是你的函式宣告,將來寫在php指令碼語句中的函式名就是在PHP_FUNCTION中定義的名字。

    PHP_FUNCTION(pconfig_test);

    如果有多個,還可以繼續往下加

    PHP_FUNCTION(pconfig_parsefile);

    PHP_FUNCTION(pconfig_release); …….

    Step 4 =>

    接下來我們看最重點的C程式碼了

    function_entry pconfig_functions[] = {

    PHP_FE(pconfig_test, NULL)

    {NULL, NULL, NULL}

    };

    php3_module_entry pconfig_module_entry = {

    "pconfig", pconfig_functions, PHP_MINIT(pconfig), PHP_MSHUTDOWN(pconfig), PHP_RINIT(pconfig), NULL, PHP_MINFO(pconfig), STANDARD_MODULE_PROPERTIES

    };

    註冊模組的入口資訊,比如模組名,函式介面,初試化模組將呼叫的函式等等,如果你的模組不執行復雜操作的話,可以忽略掉他們,寫成

    php3_module_entry pconfig_module_entry = {

    "pconfig", pconfig_functions, NULL,NULL,NULL,NULL,NULL,STANDARD_MODULE_PROPERTIES

    };

    Step 5 =>

    寫你自己的函式

    在標頭檔案和function_entry處,我們已經定義了自己的函式pconfig_test,現在我們就來實現pconfig_test的功能。就比如執行兩個數相加的和吧。

    static void _php3_pconfig_test(INTERNAL_FUNCTION_PARAMETERS)

    { ......

    }

    PHP_FUNCTION(pconfig_test)

    {

    _php3_pconfig_test(INTERNAL_FUNCTION_PARAM_PASSTHRU);

    }

    當系統呼叫pconfig_test時,會呼叫你的_php3_pconfig_test函式,當然你也可以把_php3_pconfig_test裡的內容直接寫在PHP_FUNCTION(pconfig_test)中,這樣做只是程式結構比較清晰。注意:不要將_php3_pconfig_test命名成php3_pconfig_test,PHP_FUNCTION(pconfig_test)宏展開後實際上就是php3_pconfig_test!

    Step 6 =>

    好了,現在我們開始修改configure,在echo $ac_n "checking for MySQL support""... $ac_c" 1>&6的前面(當然,如果你熟悉configure的話,可以加在任何合適的地方)加上下面幾句話

    if test "${with_pconfig+set}" = set; then

    withval="$with_pconfig"

    # Add your lib in here

    EXTRA_LIBS="$EXTRA_LIBS"

    # Add your include path in here

    INCLUDES="$INCLUDES"

    EXT_SUBDIRS="$EXT_SUBDIRS pconfig"

    EXT_LIBS="$EXT_LIBS pconfig/libphpext_pconfig.a"

    EXTINFO_DEPS="$EXTINFO_DEPS ../ext/pconfig/extinfo.c.stub"

    EXT_STATIC="$EXT_STATIC pconfig"

    fi

    修改internal_functions.c,在標頭檔案定義中加入#include "ext/pconfig/php3_pconfig.h"

    在zend_module_entry陣列中加入phpext_pconfig_ptr,

    Step 7 =>

    從新configure,帶上需要的引數,不要忘記的是在引數里加入 --with-pconfig

    Step 8 =>

    index.php3

    <? echo pconfig_test(123,678)."

    "; ?>

    執行%>php index.php3

  • 中秋節和大豐收的關聯?
  • 最近總失眠,休息不好,怎樣才能快速入睡?