天天看點

zephir-(3)你的第一個PHP拓展zephir-你的第一個PHP拓展

zephir-(3)你的第一個PHP拓展zephir-你的第一個PHP拓展

先在這裡感謝各位zephir開源技術提供者

在之前的介紹中大家不僅了解了zephir具體是一個什麼樣的語言,也get到了它的安裝方式,成功安裝到自己的系統上了.今天讓我們來一同編寫之前我們示範過的一些拓展讓我們來一同動起手來嘗試一下.

注:筆者水準有限,說的不正确的地方希望大家多多指正,一同交流技術

附上:

zephir和這本書(官方文檔和此譯文講解)的目的是為php開發人員想要用較低的複雜性建立c擴充。

假設你有一個或多個其他程式設計語言的經驗,我們将指出zephit和php中,c、javascript和其他語言有很多相似的特性,以及新的或不同的許多特性。

如果你已經成功安裝zephir,你必須能夠在您的控制台執行以下指令:

如果一切都好,你應該在你的螢幕上看到以下幫助資訊.

我們要做的第一件事就是生成一個擴充架構,這将提供給我們擴充的基本 我們需要開始工作的結構。 在我們的例子中,我們将建立一個擴充名為“utils”:

執行之後,一個目錄稱為“utils”建立在目前工作目錄:

目錄“ext/”包含将要由編譯器用于産生擴充的代碼。建立的另一個目錄是“utils”,在utils目錄下面還有一個utils目錄,我們将我們編寫的zephir代碼放在在這個目錄中。

目錄清單也将向我們展示一個檔案稱為“config.json”,該檔案包含配置設定 我們可以用它來改變zephir擴充的行為以及一些擴充資訊。

zephir生成面向對象的擴充。開始開發,我們需要給我們的一個類添加到擴充功能。

正如在許多語言/工具,我們要做的第一件事就是寫一個“hello world”對zephir進行檢查,是以,我們的第一個類将被稱為“utils\greeting”,它包含的方法列印“hello world!”.。

這個類的代碼必須被放置在“utils/utils/greeting.zep”:

現在,我們需要告訴zephir編譯和生成的擴充,必須在根目錄:

當然我們在編譯中可能遇到很多問題比如:

這是應為php.ini沒有打開這些函數導緻無法使用這些函數,我們找到disable_functions = 然後去掉後面的exec和shell_exec,passthr,systemzephir的編譯依賴于這些函數

還有可能可能會看到如下提示:

這是應為沒有安裝re2c拓展,執行如下語句安裝:

如果一切順利,您将看到以下消息 的輸出:

最後,必須添加到php擴充。 php.ini中加入extension=utils.so。

現在,添加到您的php擴充。 ini,檢查是否正常加載擴充通過執行以下:

擴充“utils”必須的一部分輸出表明擴充是正确加載。 現在,讓我們看看我們 “hello world”直接執行的php。 為此,您可以建立一個簡單的php檔案調用靜态方法 剛剛建立的:

恭喜你! ,你第一次上運作php擴充。

“hello world”類很好檢查如果我們的環境是對的,現在,讓我們建立一些更有用的類。

第一個有用的類,我們要添加此擴充将為使用者提供過濾裝置。 這個類被稱為“utils\filter”,其代碼都必須放置在“utils/utils/filter.zep”:

類包含過濾方法,幫助使用者過濾不必要字元串。 第一個方法叫做“alpha”,其目的是過濾隻有那些ascii字元基本的字母。 開始,我們隻是将周遊每個位元組字元串列印到标準輸出:

當調用這個方法:

你會看到:

檢查每個字元的字元串都是簡單的,我們現在就可以建立另一個字元串過濾字元:

完整的方法也可以像之前測試:

這是一個非常簡單的教程,你可以看到,很容易使用zephir開始建構擴充,後面我們更深入的學習會和所有語言一樣從最基礎變量文法開始,一步一步深入,最後多謝大家的支援!

注:筆者能力有限有說的不對的地方希望大家能夠指出,也希望多多交流!