内建方法

如前所述,Zephir提倡面向对象编程。 与静态类型相关的变量也可以作为对象处理。

比较这两种方法:

public function binaryToHex(string! s) -> string
{
    var o = "", n; char ch;

    for ch in range(0, strlen(s)) {
        let n = sprintf("%X", ch);
        if strlen(n) < 2 {
            let o .= "0" . n;
        } else {
            let o .= n;
        }
    }
    return o;
}

public function binaryToHex(string! s) -> string
{
    var o = "", n; char ch;

    for ch in range(0, s->length()) {
        let n = ch->toHex();
        if n->length() < 2 {
            let o .= "0" . n;
        } else {
            let o .= n;
        }
    }
    return o;
}

它们都有相同的功能,但是第二个使用的是面向对象编程。 对静态类型变量调用方法对性能没有任何影响,因为Zephir在内部将代码从面向对象版本转换为过程版本。

String

下面的字符串内置方法可用:

OO 实际过程 说明
s->format() sprintf(s, "%s", x) 返回格式化的字符串
s->index("foo") strpos(s, "foo") 查找字符串中第一个出现的子字符串的位置
s->length() strlen(s) 获取字符串长度
s->lower() strtolower(s) 使字符串小写
s->lowerfirst() lcfirst(s) 使字符串的第一个字符小写
s->md5() md5(s) 计算字符串的 md5 哈希
s->sha1() sha1(s) 计算字符串的 sha1 哈希
s->trim() trim(s) 删除字符串的开头和结尾的空格 (或其他字符)
s->trimleft() ltrim(s) 从字符串开头的条带空白 (或其他字符)
s->trimright() rtrim(s) 删除字符串末端的空白字符(或者其他字符)
s->upper() strtoupper(s) 使字符串大写
s->upperfirst() ucfirst(s) 使字符串的第一个字符大写

Array

可用的数组内置方法如下:

OO 实际过程 说明
a->combine(b) array_combine(a, b) 通过使用一个数组表示键, 为其值创建另一个数组
a->diff() array_diff(a) 计算数组的差异
a->flip() array_flip(a) 将数组中的所有键与其关联的值交换
a->hasKey() array_key_exists(a) 检查数组中是否存在给定的键或索引
a->intersect(b) array_intersect(a, b) 计算数组的交集
a->join(" ") join(" ", a) 使用字符串联接数组元素
a->keys() array_keys(a) 返回数组的所有键或键的子集
a->merge(b) array_merge(a, b) 合并一个或多个数组
a->pad() array_pad(a, b) 以指定长度将一个值填充进数组
a->rev() array_reverse(a) 返回具有相反顺序的元素的数组
a->reversed() array_reverse(a) 返回具有相反顺序的元素的数组
a->split() array_chunk(a) 将数组拆分为多个块
a->values() array_values(a) 返回数组的所有值
a->walk() array_walk(a) 使用用户自定义函数对数组中的每个元素做回调处理

Char

提供了以下字符内置方法:

OO 实际过程
ch->toHex() sprintf("%X", ch)

Integer

以下是可用的整数内置方法:

OO 实际过程
i->abs() abs(i)