PHP 擴充套件開發 Zephir 基礎篇

2021-09-12 18:50:52 字數 2055 閱讀 2352

基本語法

zephir 中,每個檔案都必須有且只有乙個類,每個類都必須有乙個命名空間,目錄結構必須與所使用的類和命名空間的名稱相匹配,這一點和 psr4 的約定一致,但是它是強制的。空間名和類名首字母大寫,檔名全部小寫。

變數

zephir 支援動態型別和靜態型別。變數作為函式返回值時,必須宣告為動態型別。

動態變數與 php 中的變數基本完全相同,支援在使用時改變型別。

與 php 不一樣,變數名不需要帶$符號,所有變數在使用前都需要先定義,動態型別通過 var 關鍵字宣告。

var a = 10,b,c;

let b = 20;

let c = a + b;

與 php 不一樣,字串文字只能使用雙引號指定,不能用單引號,也不支援變數解析,比如這樣是不支援的。

var a = "變數解析"
靜態變數

靜態型別一旦被宣告,就不能更改。支援如下型別

給靜態型別變數賦值,會先嘗試自動轉換,轉換失敗丟擲異常

boolean a;

let a = 0; // a = false

let a = "string"; // 丟擲異常

運算子zephir 的運算子與 php 基本一致。比較運算子在運算時考慮變數型別,如果是動態變數與 php 一致。不支援太空船操作符、空合併運算子。

特殊運算子 - fetch

php

if (isset($myarray[$key]))
zephir

if fetch value, myarray[key]
控制結構zephir 提供了 if/switch/while/loop/for 幾種語句,前三種與 php 基本一致。zephir 控制語句中括號是非必選的。

loop 可以用來建立無限迴圈,相當於 while true

let n = 40;

loop

echo x, "\n";

}

for 和 php 一樣支援索引 value 和 key => value

for item in ["a", "b", "c", "d"] 

let items = ["a": 1, "b": 2, "c": 3, "d": 4];

for key, value in items

還非常友好的提供了反方向遍歷

let items = [1, 2, 3, 4, 5];

for value in reverse items

與 python 等語言一樣,遍歷一系列整數值,可以這麼寫:

for i in range(1, 10)
異常處理異常處理與 php 類似,在try 語句中丟擲異常,在 catch 中捕獲。

var e;

try catch \exception, e

與 php 不一致,zephir try 語句可以沒有 catch,表示忽略所有異常。

即,這是合法的

try
捕獲多個異常也非常方便

var e;

try catch \runtimeexception|\exception, e

附件1官方文件

PHP 擴充套件開發 Zephir 基礎篇

基本語法 zephir 中,每個檔案都必須有且只有乙個類,每個類都必須有乙個命名空間,目錄結構必須與所使用的類和命名空間的名稱相匹配,這一點和 psr4 的約定一致,但是它是強制的。空間名和類名首字母大寫,檔名全部小寫。變數 zephir 支援動態型別和靜態型別。變數作為函式返回值時,必須宣告為動態...

php擴充套件開發(一)zephir

zephir的語法跟php很相似,自動生成擴充套件的c語言 使編寫php擴充套件變得非常的簡單。1.安裝 1.1 安裝依賴 sudo yum y install autoconf automake libtool json c re2c git clone sudo cp r zephir usr ...

php擴充套件開發

php擴充套件 pecl 跟php引擎一樣都是使用c語言開發。php核心開發組成員鳥哥laruence使用的是vim進行php開發。書籍 案例 php src ext pecl開發郵件組 盡量編寫一些phpt測試用例,php src tests下有很多參考.測試時用 enable debug編譯ph...