摘要:變量作為函數(shù)返回值時,必須聲明為動態(tài)類型。動態(tài)變量與中的變量基本完全相同支持在使用時改變類型。比較運算符在運算時考慮變量類型,如果是動態(tài)變量與一致。與不一致,語句可以沒有,表示忽略所有異常。
上一篇 《Zephir 簡介》 簡單介紹了環(huán)境搭建,編寫了一個的簡單示例。這一篇繼續(xù)介紹 Zephir 基礎(chǔ)。
基本語法
Zephir 中,每個文件都必須有且只有一個類,每個類都必須有一個命名空間,目錄結(jié)構(gòu)必須與所使用的類和命名空間的名稱相匹配,這一點和 PSR4 的約定一致,但是它是強制的??臻g名和類名首字母大寫,文件名全部小寫。
變量
Zephir 支持動態(tài)類型和靜態(tài)類型。變量作為函數(shù)返回值時,必須聲明為動態(tài)類型。
動態(tài)變量與 PHP 中的變量基本完全相同,支持在使用時改變類型。
與 PHP 不一樣,變量名不需要帶$符號,所有變量在使用前都需要先定義,動態(tài)類型通過 var 關(guān)鍵字聲明。
var a = 10,b,c; let b = 20; let c = a + b;
與 PHP 不一樣,字符串文字只能使用雙引號指定,不能用單引號,也不支持變量解析,比如這樣是不支持的。
var a = "變量解析{$test}"
靜態(tài)變量
靜態(tài)類型一旦被聲明,就不能更改。支持如下類型
給靜態(tài)類型變量賦值,會先嘗試自動轉(zhuǎn)換,轉(zhuǎn)換失敗拋出異常
boolean a; let a = 0; // a = false let a = "string"; // 拋出異常
運算符
Zephir 的運算符與 PHP 基本一致。比較運算符在運算時考慮變量類型,如果是動態(tài)變量與 PHP 一致。不支持太空船操作符、空合并運算符。
特殊運算符 - Fetch
PHP
if (isset($myArray[$key])) { $value = $myArray[$key]; echo $value; }
Zephir
if fetch value, myArray[key] { echo value; }
控制結(jié)構(gòu)
Zephir 提供了 if/switch/while/loop/for 幾種語句,前三種與 PHP 基本一致。Zephir 控制語句中括號是非必選的。
loop 可以用來創(chuàng)建無限循環(huán),相當于 while true
let n = 40; loop { let n -= 2; if n % 5 == 0 { break; } echo x, " "; }
for 和 PHP 一樣支持索引 value 和 key => value
for item in ["a", "b", "c", "d"] { echo item, " "; } let items = ["a": 1, "b": 2, "c": 3, "d": 4]; for key, value in items { echo key, " ", value, " "; }
還非常友好的提供了反方向遍歷
let items = [1, 2, 3, 4, 5]; for value in reverse items { echo value, " "; }
與 python 等語言一樣,遍歷一系列整數(shù)值,可以這么寫:
for i in range(1, 10) { echo i, " "; }
異常處理
異常處理與 PHP 類似,在try 語句中拋出異常,在 catch 中捕獲。
var e; try { throw new Exception("This is an exception"); } catch Exception, e { echo e->getMessage(); }
與 PHP 不一致,Zephir try 語句可以沒有 catch,表示忽略所有異常。
即,這是合法的
try { throw new Exception("This is an exception"); }
捕獲多個異常也非常方便
var e; try { throw new Exception("This is an exception"); } catch RuntimeException|Exception, e { echo e->getMessage(); }
附件1
官方文檔
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/30185.html
摘要:概述是一個開源的用于簡化擴展的創(chuàng)建和維護的語言。它使得不擅長的開發(fā)人員也能寫出擴展。是縮寫,讀音為。然后我們在里調(diào)用方法正常的話會輸出。至此我們也完成了我們的第一個擴展。 概述 Zephir是一個開源的用于簡化PHP擴展的創(chuàng)建和維護的語言。它使得不擅長C/C++的PHP開發(fā)人員也能寫出PHP擴展。Zephir是Zend Engine/PHP/Intermediate縮寫,讀音為zep...
摘要:什么是是一種中間語言,以接近的語法來編寫代碼,然后轉(zhuǎn)換編譯成擴展,旨在簡化擴展的創(chuàng)建和可維護性。如果成功,會自動生成文件到目錄你需要編輯填加擴展測試一下就這樣,你也會擴展開發(fā)了附附編譯擴展的方法 什么是 Zephir Zephir 是一種中間語言,以接近 PHP 的語法來編寫代碼,然后轉(zhuǎn)換編譯成 PHP 擴展,旨在簡化 PHP 擴展的創(chuàng)建和可維護性。利用編譯來提高性能和資源消耗,又不需...
摘要:簡介通過擴展,我們可以在代碼中使用一些特定的方法大部分的擴展都是用寫的。這個目錄與我們的擴展同名。我們先來在擴展中創(chuàng)建一個類,使用此類來渲染。接下來命令行執(zhí)行以下命令來編譯擴展第一次運行以上命令時,會初始化一些東西。 showImg(https://segmentfault.com/img/remote/1460000018698586); 簡介: 通過 PHP 擴展, 我們可以在 p...
摘要:變量對象屬性數(shù)組靜態(tài)變量不支持全局變量,也不允許訪問用戶域的全局變量,但是可以訪問的超級全局變量變量類型支持動態(tài)和靜態(tài)類型。雖然失去了動態(tài)型變量的靈活性,但是在編譯時靜態(tài)變量能進行更多的優(yōu)化。 概述 Zephir的語法跟PHP很相似,所以這里不會把官網(wǎng)的文檔照搬過來翻譯一遍,而是會把一些Zephir相較于PHP比較特別的語法挑出來講一下。如果想要要完整學(xué)習(xí)Zephir的語法,沒有比官...
摘要:更多關(guān)于的技術(shù)文章的擴展是用語言編寫,是語言引擎,內(nèi)核。見提供了一種類似的高級語言語法的方式,來自動生成擴展的語言代碼,使編寫擴展變得非常的簡單。直接修改該文件的代碼,使用原擴展的編輯方法也是可以滴。 更多關(guān)于PHP的技術(shù)文章http://www.codefrom.com/ php的擴展是用c語言編寫,Zend是語言引擎,PHP內(nèi)核。在實際編寫php擴展的時候,需要使用大量的...
閱讀 530·2023-04-26 00:33
閱讀 3552·2021-11-24 09:39
閱讀 2960·2021-09-22 15:34
閱讀 2332·2019-08-23 18:07
閱讀 2926·2019-08-23 18:04
閱讀 3713·2019-08-23 16:06
閱讀 2904·2019-08-23 15:27
閱讀 1626·2019-08-23 14:32