Встроенные методы
Как упоминалось ранее, 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
Над строковым типом данных определены следующие встроенные методы:
ООП | Процедурный | Описание |
---|---|---|
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
Над массивами определены следующие встроенные методы:
ООП | Процедурный | Описание |
---|---|---|
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
Над символьным типом данных определены следующие встроенные методы:
ООП | Процедурный |
---|---|
ch->toHex() |
sprintf("%X", ch) |
Integer
Над целочисленным типом данных определены следующие встроенные методы:
ООП | Процедурный |
---|---|
i->abs() |
abs(i) |