摘要:概述是一個開源的用于簡化擴展的創建和維護的語言。它使得不擅長的開發人員也能寫出擴展。是縮寫,讀音為。然后我們在里調用方法正常的話會輸出。至此我們也完成了我們的第一個擴展。
概述
Zephir是一個開源的用于簡化PHP擴展的創建和維護的語言。它使得不擅長C/C++的PHP開發人員也能寫出PHP擴展。Zephir是Zend Engine/PHP/Intermediate縮寫,讀音為zephyr。
Zephir在語法上跟PHP有很多相似之處,PHP開發人員可以很快上手,但也有很多地方上的不同需要我們去學習。下面是Zephir一些主要的特色:
變量類型:動態/靜態
內存安全:不允許指針和直接的內存管理
編譯模型:AOT(ahead of time)
內存模型:task-local垃圾回收
安裝 依賴要使用Zephir和編譯出一個PHP擴展,需要先安裝以下的依賴:
gcc >= 4.x/clang >= 3.x
re2c 0.13+
gnu make 3.81+
autoconf 2.31+
automake 1.14+
libpcre3
php development headers and tools
安裝這里選擇使用git的方式獲取源代碼并進行安裝:
bash$ git clone https://github.com/phalcon/zephir $ cd zephir $ ./install-json $ ./install -c
驗證如果已經安裝了json-c,那么可以忽略 ./install-json這一步。
通過運行zephir命令驗證下是否安裝成功:
bash$ zephir help _____ __ _ /__ / ___ ____ / /_ (_)____ / / / _ / __ / __ / / ___/ / /__/ __/ /_/ / / / / / / /____/\___/ .___/_/ /_/_/_/ /_/ Zephir version 0.7.1b Usage: command [options] Available commands: stubs Generates extension PHP stubs install Installs the extension (requires root password) fullclean Cleans the generated object files in compilation build Generate/Compile/Install a Zephir extension generate Generates C code from the Zephir code clean Cleans the generated object files in compilation builddev Generate/Compile/Install a Zephir extension in development mode compile Compile a Zephir extension version Shows the Zephir version api [--theme-path=/path][--output-directory=/path][--theme-options={json}|/path]Generates a HTML API help Displays this help init [namespace] Initializes a Zephir extension Options: -f([a-z0-9-]+) Enables compiler optimizations -fno-([a-z0-9-]+) Disables compiler optimizations -w([a-z0-9-]+) Turns a warning on -W([a-z0-9-]+) Turns a warning off我們的第一個擴展
下面我們使用Zephier來創建一個“hello world”擴展。
初始化首先,我們使用init命令來初始化擴展的基本結構(假設我們擴展的名稱為“utils”):
bash$ zephir init utils
成功運行后,我們應該會得到如下的目錄結構:
bashutils/ ext/ utils/
ext目錄里放的是編譯器需要用到的代碼,不用理會,我們的Zephir代碼將放在跟擴展名同名的utils里。
編寫代碼我們在utils目錄下創建一個文件:greeting.zep,并編寫代碼:
phpnamespace Utils; class Greeting { public static function say() { echo "hello world!"; } }
這里不深入Zephir的語法,但是可以看到語法跟PHP很類似,上面的代碼定義了一個類Greeting和一個方法say()。
編譯Zephir的語法詳情可以參考官方的文檔:http://zephir-lang.com/language.html。
接下來,我們回到utils根目錄下并運行build命令編譯出擴展:
bash$ zephir build Preparing for PHP compilation... Preparing configuration file... Compiling... Installing... Extension installed! Add extension=utils.so to your php.ini Don"t forget to restart your web serverp
編譯成功后,我們在PHP配置文件里增加以下一行:
iniextension=utils.so驗證
通過如下命令查看我們的擴展是否正常加載:
bashphp -m [PHP Modules] ... memcached mysql mysqli mysqlnd openssl utils ...
如果看到我們擴展的名字,則證明已成功加載。
然后我們在PHP里調用say()方法:
php正常的話會輸出:hello world!。至此我們也完成了我們的第一個擴展。
參考http://zephir-lang.com/index.html
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/21031.html
摘要:變量對象屬性數組靜態變量不支持全局變量,也不允許訪問用戶域的全局變量,但是可以訪問的超級全局變量變量類型支持動態和靜態類型。雖然失去了動態型變量的靈活性,但是在編譯時靜態變量能進行更多的優化。 概述 Zephir的語法跟PHP很相似,所以這里不會把官網的文檔照搬過來翻譯一遍,而是會把一些Zephir相較于PHP比較特別的語法挑出來講一下。如果想要要完整學習Zephir的語法,沒有比官...
摘要:四使用語言開發是我重點推薦的擴展開發框架,簡明易懂,功能強大,開發效率高,代碼易維護,執行速度快。優點三支持,的擴展開發有兩套擴展開發框架,分別支持,,雖然框架代碼有兩個,但是接口卻是一樣的。 PHP擴展是高級PHP程序員必須了解的技能之一,對于一個初入門的PHP擴展開發者,怎么才能開發一個成熟的擴展,進入PHP開發的高級領域呢?本系列開發教程將手把手帶您從入門進入高級階段。本教程系列...
摘要:簡介通過擴展,我們可以在代碼中使用一些特定的方法大部分的擴展都是用寫的。這個目錄與我們的擴展同名。我們先來在擴展中創建一個類,使用此類來渲染。接下來命令行執行以下命令來編譯擴展第一次運行以上命令時,會初始化一些東西。 showImg(https://segmentfault.com/img/remote/1460000018698586); 簡介: 通過 PHP 擴展, 我們可以在 p...
摘要:什么是是一種中間語言,以接近的語法來編寫代碼,然后轉換編譯成擴展,旨在簡化擴展的創建和可維護性。如果成功,會自動生成文件到目錄你需要編輯填加擴展測試一下就這樣,你也會擴展開發了附附編譯擴展的方法 什么是 Zephir Zephir 是一種中間語言,以接近 PHP 的語法來編寫代碼,然后轉換編譯成 PHP 擴展,旨在簡化 PHP 擴展的創建和可維護性。利用編譯來提高性能和資源消耗,又不需...
摘要:更多關于的技術文章的擴展是用語言編寫,是語言引擎,內核。見提供了一種類似的高級語言語法的方式,來自動生成擴展的語言代碼,使編寫擴展變得非常的簡單。直接修改該文件的代碼,使用原擴展的編輯方法也是可以滴。 更多關于PHP的技術文章http://www.codefrom.com/ php的擴展是用c語言編寫,Zend是語言引擎,PHP內核。在實際編寫php擴展的時候,需要使用大量的...
閱讀 2596·2023-04-25 15:07
閱讀 705·2021-11-24 10:21
閱讀 2299·2021-09-22 10:02
閱讀 3517·2019-08-30 15:43
閱讀 3222·2019-08-30 13:03
閱讀 2287·2019-08-29 17:18
閱讀 3586·2019-08-29 17:07
閱讀 1873·2019-08-29 12:27