如何使用Zephir輕鬆構建PHP擴充套件

2022-09-26 01:57:08 字數 1629 閱讀 9529

比如,在 php 中需要與 sqlite3 互動,我們可以自己寫方法與之進行連線,再寫 sql 語句請求資料。然而,這都是些既瑣碎又重複度相當高的工作,因此,所有開發者對外掛程式的需求呼之欲出。

現在,這款外掛程式已經誕生了。你只需像安裝其他擴充套件一樣進行安裝,然後在 'php.ini' 檔案執行 'extension=sqllite3.so',就可以在你的 php 專案裡對 sqlite3 進行訪問了。

官網文件給出的定義是:

一種開源的高階語言,旨在簡化 php 擴充套件的建立和可維護性,重點關注型別和記憶體安全性。

特點:

工作原理?

把你寫好的 php **編譯成 c,然後你可以將其以擴充套件的形式新增到 'php.ini' 檔案中。

下面是編譯方案的例子:

編譯方案

讓我們從 hello world 的擴充套件開始吧。

配置要求:

如果你是用 ubuntu, 可以採取如下方式安裝:

sudo apt-get update

sudo apt-get install git gcc make re2c php7.0 php7.0-json php7.0-dev libpcre3-dev

參考下圖命令,確認安裝了較新的 php 版本:

參考下圖命令,確認有 php 開發庫:

然後git clone

cd zephir

./install -c

驗證是否安裝正確:

zephir help

如果一切就緒,你應該能在你的螢幕上看到以下幫助資訊:

擴充套件初始化:

zephir init helloworld

然後,乙個名字為 「helloworld」 的目錄在當前工作目錄中被建立:

擴充套件目錄結構:

程式設計客棧

新增我們的第乙個類:

在 helloworld 目錄中.

zephir 的設計初衷是用來生成面對物件的擴充套件,接下來我們先新增乙個初始類。

我們先來在擴充套件中建立乙個 helloworld 類,使用此類來渲染hello world!。

helloworld/helloworld/greeting.zep

namespace helloworld;

class greeting

}接下來命令列執行以下命令來編譯擴充套件:

zephir build

第一次執行以上命令時,會初始化一些東西。如果一些順利的話,會輸出以下內容:

zephir build output

檢測下是否安裝成功:

在 php **中測試:

zephir_helloworld.php

<?php echo helloworld\greeting::say()."\n";

接下來執行命令:

php zephir_helloworld.php

你可以可以看到輸出

hello worl

如果你是 php 軟體工程師,對記憶體管理等底層語言的程式設計方式不是特別熟悉,可以嘗試從 zephir 開始寫一些簡單的擴充套件。

zephir 內部已經做好了記憶體管理,但是基於其記憶體安全的設計,你無法使用 c 語言的強大手動記憶體管理功能,如果你是 c 程式設計師,你會覺得 zephir 更加簡單易用,但是在有些地方可能不夠強大。

使用SSH如何構建架構層次

在搭建系統的架構時我們採用了ssh ajax 等方式構建的。我們一直說要層次分明,思路清晰,可現在都比較糟糕。比如 jsp頁面用來顯示資料的,css用來美化頁面,js用來控制頁面的。現在很多頁面中什麼都有了,臭味很多。在後台我們也分了action,service,dao層,原本action用來控制排...

使用SSH如何構建架構層次

在搭建系統的架構時我們採用了ssh ajax 等方式構建的。我們一直說要層次分明,思路清晰,可現在都比較糟糕。比如 jsp頁面用來顯示資料的,css用來美化頁面,js用來控制頁面的。現在很多頁面中什麼都有了,臭味很多。在後台我們也分了action,service,dao層,原本action用來控制排...

如何使用 Buildah 構建容器映象

project atomic 通過他們在 open container initiative oci 上的努力創造了乙個名為 buildah 的偉大工具。buildah 能幫助建立 構建和更新,它支援 docker 容器映象以及 oci 相容映象。buildah 處理構建容器映象時無需安裝完整的容器...