【PHP 扩展开发】Zephir 基础篇

栏目: PHP · 发布时间: 6年前

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

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

基本语法

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

变量

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

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

【PHP 扩展开发】Zephir 基础篇

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

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

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

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

静态变量

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

【PHP 扩展开发】Zephir 基础篇

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

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

官方文档

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Head First Design Patterns

Head First Design Patterns

Elisabeth Freeman、Eric Freeman、Bert Bates、Kathy Sierra、Elisabeth Robson / O'Reilly Media / 2004-11-1 / USD 49.99

You're not alone. At any given moment, somewhere in the world someone struggles with the same software design problems you have. You know you don't want to reinvent the wheel (or worse, a flat tire),......一起来看看 《Head First Design Patterns》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

MD5 加密
MD5 加密

MD5 加密工具