内建方法

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

比较这两种方法:

  1. public function binaryToHex(string! s) -> string
  2. {
  3. var o = "", n; char ch;
  4. for ch in range(0, strlen(s)) {
  5. let n = sprintf("%X", ch);
  6. if strlen(n) < 2 {
  7. let o .= "0" . n;
  8. } else {
  9. let o .= n;
  10. }
  11. }
  12. return o;
  13. }

  1. public function binaryToHex(string! s) -> string
  2. {
  3. var o = "", n; char ch;
  4. for ch in range(0, s->length()) {
  5. let n = ch->toHex();
  6. if n->length() < 2 {
  7. let o .= "0" . n;
  8. } else {
  9. let o .= n;
  10. }
  11. }
  12. return o;
  13. }

它们都有相同的功能,但是第二个使用的是面向对象编程。 对静态类型变量调用方法对性能没有任何影响,因为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)