内建方法
如前所述,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) |