上一篇 《Zephir 简介》 简单介绍了环境搭建,编写了一个的简单示例。这一篇继续介绍 Zephir 基础。

基本语法
Zephir 中,每个文件都必须有且只有一个类,每个类都必须有一个命名空间,目录结构必须与所使用的类和命名空间的名称相匹配,这一点和 PSR4 的约定一致,但是它是强制的。空间名和类名首字母大写,文件名全部小写。

变量
Zephir 支持动态类型和静态类型。变量作为函数返回值时,必须声明为动态类型。

动态变量与 PHP 中的变量基本完全相同,支持在使用时改变类型。

与 PHP 不一样,变量名不需要带$符号,所有变量在使用前都需要先定义,动态类型通过 var 关键字声明。

var a = 10,b,c;
let b = 20;
let c = a + b;

与 PHP 不一样,字符串文字只能使用双引号指定,不能用单引号,也不支持变量解析,比如这样是不支持的。

var a = "变量解析{$test}"

静态变量

静态类型一旦被声明,就不能更改。支持如下类型

给静态类型变量赋值,会先尝试自动转换,转换失败抛出异常

boolean a;
let a = 0; // a = false
let a = "string"; // 抛出异常

运算符

Zephir 的运算符与 PHP 基本一致。比较运算符在运算时考虑变量类型,如果是动态变量与 PHP 一致。不支持太空船操作符、空合并运算符。

特殊运算符 - Fetch

PHP

if (isset($myArray[$key])) {$value = $myArray[$key];echo $value;
}

Zephir

if fetch value, myArray[key] {echo value;
}

控制结构
Zephir 提供了 if/switch/while/loop/for 几种语句,前三种与 PHP 基本一致。Zephir 控制语句中括号是非必选的。
loop 可以用来创建无限循环,相当于 while true

let n = 40;
loop {let n -= 2;if n % 5 == 0 { break; }echo x, "\n";
}

for 和 PHP 一样支持索引 value 和 key => value

for item in ["a", "b", "c", "d"] {echo item, "\n";
}let items = ["a": 1, "b": 2, "c": 3, "d": 4];for key, value in items {echo key, " ", value, "\n";
}

还非常友好的提供了反方向遍历

let items = [1, 2, 3, 4, 5];for value in reverse items {echo value, "\n";
}

与 python 等语言一样,遍历一系列整数值,可以这么写:

for i in range(1, 10) {echo i, "\n";
}

异常处理

异常处理与 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
官方文档

【PHP 扩展开发】Zephir 基础篇相关推荐

  1. 【QT开发笔记-基础篇】| 第二章 常用控件 | 2.12 表格控件 QTableWidget

    本节对应的视频讲解:B_站_链_接 QTableWidget 是 Qt 中的表格控件,可以行列的形式来展示数据 1. 属性和方法 QTableWidget 有很多属性和方法,完整的可查看帮助文档. 在 ...

  2. AIR移动(Starling)开发笔记基础篇

    AIR移动(Starling)开发笔记基础篇 ---------kiddyPs:文档写的不是很好,欢迎指正和扩展 Starling相关 自定义移动动画 A.自定义函数 var tw:Tween = n ...

  3. Xamarin.Forms开发实战基础篇大学霸内部资料

    Xamarin.Forms开发实战基础篇大学霸内部资料 介绍:本教程是国内第一本Xamarin.Forms开发专向教程.本教程针对Xamarin.Forms初学用户,全面细致的讲解Xmarin.For ...

  4. 小程序开发入门基础篇-张代浩-专题视频课程

    小程序开发入门基础篇-1995人已学习 课程介绍         采用小程序wepy框架,初级讲解如何搭建小程序的开发环境,创建工程,语法介绍.开发调试等,课程采用实战代码案例作为教材,通俗易懂,简单 ...

  5. Android 音视频开发之基础篇 使用 SurfaceView绘制一张图片

    Android 音视频开发 上一篇文章:使用 imageview绘制一张图片 任务一 SurfaceView绘制一张图片 文章目录 Android 音视频开发 前言 一.surfaceview是什么? ...

  6. Google Map 开发笔记——基础篇(Javascript )

    Google Map 开发笔记--基础篇 说明: 一.使用入门: 1.在您需要显示地图的 html 页面嵌入这段 script 2.地图 DOM 元素 3.初始化地图 二.地图画点.线.面 1.标记( ...

  7. apollo系列之apollo2 mcu开发(基础篇)之1.3-解析编译生成的IAR中的map文件

    查看全部教程开发请点击:apollo系列汇总 查看本文全部文章请点击:apollo系列之apollo2 mcu开发(基础篇)之1.3-解析编译生成的IAR中的map文件 =============== ...

  8. 【图形学与游戏编程】开发笔记-基础篇1:熟悉开发环境

    (本系列文章由pancy12138编写,转载请注明出处:http://blog.csdn.net/pancy12138) 在入门篇的文章中,我们几乎没有提及任何与程序相关的知识.只是为大家逐一的解释了 ...

  9. Android 音视频开发之基础篇 使用 imageview绘制一张图片

    Android 音视频开发 任务一 ImageView 绘制图片 文章目录 Android 音视频开发 任务一 ImageView 绘制图片 前言 一.配置activity_main.xml 二.添加 ...

最新文章

  1. yum update不升级内核方法
  2. Winform中跨窗体设置ZedGraph的属性并刷新曲线图
  3. 微软 Powertoys 推出新的实用程序,自定义键盘快捷管理
  4. 给Python初学者的入门课程建议
  5. 湖州机器人上课时间_【倒计时5天】燃到炸!湖州吾悦广场10月30日开业狂欢指南,请收下...
  6. java同构数_Java 同构数的问题
  7. Office 2016更新后 Word 2016、Excel 2016、Power 2016、Visio 2016、OneNote 2016图标全部消失问题解决
  8. 如何比较两条回归直线
  9. 电池SOC仿真系列-Battery模块
  10. WIN7专业版纯净下载:
  11. 微信公众号学习--点亮图片
  12. 微信小程序:三元表达式设置样式
  13. 做财务讲师真的好吗?启宣教育告诉你答案
  14. odoo11在win10环境搭建
  15. 如何使用Proteus进行电路设计仿真?
  16. 网站ui设计是什么意思【萧蕊冰】
  17. lrtimelapse 5.2.1中文版 附安装教程
  18. 关闭iframe中弹窗,视频也关闭播放
  19. DotNetFX40
  20. 《asp.net夜话》一书视频ASP.NET夜话视频1-19章下载(ASP.NET夜话2009年5月15日更新)

热门文章

  1. Ruby-Metasploit的核心
  2. mysql的存储引擎详解_MySQL常见存储引擎详解
  3. 各种计算机端口功能,STP各种端口的功能是什么?
  4. java mvc数据库 封装_关于SpringMvc参数封装_JavaEE框架(Maven+SpringMvc+Spring+MyBatis)全程实战教程_Java视频-51CTO学院...
  5. linux看java堆大小,linux 改java堆内存大小
  6. 中班机器人歌曲_机器人幼儿园大班音乐教案
  7. 分布式光伏补贴_四川:2020年起工商业分布式光伏已无补贴
  8. oracle几个网络,ORACLE网络的几个重点概念
  9. IntelliJ IDEA 乱码:全网最全 4 种方法完美解决 IntelliJ IDEA 控制台中文乱码问题
  10. 七、Python第七课——有关列表的二三事(切片、切片的遍历和复制)