当前位置: 首页 > 后端技术 > PHP

【PHP扩展开发】Zephir基础

时间:2023-03-29 20:42:32 PHP

上一篇《Zephir 简介》简单介绍一下环境搭建,写个简单的例子。本文继续介绍Zephir的基础知识。基本语法在Zephir中,每个文件必须有一个且只能有一个类,每个类必须有一个命名空间,目录结构必须与所使用的类和命名空间的名称相匹配,这与PSR4约定一致。但这是强制性的。空间名和类名首字母大写,文件名全部小写。变量Zephir支持动态类型和静态类型。当变量用作函数返回值时,必须将其声明为动态类型。动态变量与PHP中的变量基本相同,使用时支持改变类型。与PHP不同的是,变量名不需要有$符号,所有变量在使用前都需要定义,动态类型通过var关键字声明。vara=10,b,c;设b=20;设c=a+b;与PHP不同的是,字符串字面量只能使用双引号指定,不能使用单引号,并且不支持变量解析,例如Unsupported。vara="Variableresolution{$test}"静态变量静态类型一旦声明,就不能再改变。支持以下类型给静态类型变量赋值。首先会尝试自动转换,如果转换失败会抛出异常。基本上和PHP一样。比较运算符在操作时会考虑变量类型,如果是动态变量则与PHP保持一致。不支持宇宙飞船运算符、空合并运算符。特殊运算符-FetchPHPif(isset($myArray[$key])){$value=$myArray[$key];echo$value;}Zephiriffetchvalue,myArray[key]{echovalue;}Zephir提供的控制结构if/switch/while/loop/for语句有几种,前三种和PHP基本相同。括号在Zephir控制语句中是可选的。loop可用于创建无限循环,相当于whiletrueletn=40;loop{letn-=2;如果n%5==0{中断;}echox,"\n";}for支持索引,如PHPvalue和key=>valueforitemin["a","b","c","d"]{echoitem,"\n";}letitems=["a":1,"b":2,"c":3,"d":4];forkey,valueinitems{echokey,"",value,"\n";}也很友好的提供反向遍历letitems=[1,2,3,4,5];forvalueinreverseitems{echovalue,"\n";}和python等语言一样,遍历一系列整数值可以这样写:foriinrange(1,10){echoi,"\n";}异常处理异常处理类似于PHP,在try语句中抛出异常,在catch中捕获。vare;try{thrownew\Exception("Thisisanexception");}catch\Exception,e{echoe->getMessage();}与PHP不一致,Zephirtry语句可以没有catch,表示忽略所有例外。即合法try{thrownew\Exception("Thisisanexception");}捕获多个异常也很方便RuntimeException|\Exception,e{echoe->getMessage();}附件1官方文档