011 Встроенные методы
Как упоминалось ранее, 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->length() | strlen(s) | Получить длину строки |
| s->trim() | trim(s) | Удалять пробелы (или другие символы) из начала и конца строки |
| s->trimleft() | ltrim(s) | Удалить пробелы (или другие символы) из начала строки |
| s->trimright() | rtrim(s) | Удалить пробелы (или другие символы) из конца строки |
| s->index(“foo”) | strpos(s, “foo”) | Найти позицию первого вхождения подстроки в строке |
| s->lower() | strtolower(s) | Строка в нижнем регистре |
| s->upper() | strtoupper(s) | Строка в верхнем регистре |
| s->lowerfirst() | lcfirst(s) | Сделать первый символ строки строчным |
| s->upperfirst() | ucfirst(s) | Сделать первый символ строки заглавным |
| s->format() | sprintf(s, “%s”, x) | Возвращает отформатированную строку |
| s->md5() | md5(s) | Вычислить MD5-хэш строки |
| s->sha1() | sha1(s) | Вычислить SHA1-хэш строки |
Array
Доступны следующие встроенные методы массива:
| ООП | Процедурный | Описание |
| a->join(” ”) | join(” ”, a) | Объединение элементов массива в строку |
| a->rev() | array_reverse(a) | Возвращает массив с элементами в обратном порядке |
| a->reverse() | array_reverse(a) | Возвращает массив с элементами в обратном порядке |
| a->diff() | array_diff(a) | Вычисляет различие массивов |
| a->flip() | array_flip(a) | Обмен всеми ключами со связанными значениями в массиве |
| a->walk() | array_walk(a) | Применение пользовательской функции к каждому члену массива |
| a->hasKey() | array_key_exists(a) | Проверяет, существует ли данный ключ или индекс в массиве |
| a->keys() | array_keys(a) | Возвращает все ключи или подмножество ключей массива |
| a->values() | array_values(a) | Возвращает все значения массива |
| a->split() | array_chunk(a) | Разбить массив на куски |
| a->combine(b) | array_combine(a, b) | Создает массив, используя один массив для ключей, а другой-для его значений |
| a->intersect(b) | array_intersect(a, b) | Вычисляет пересечение массивов |
| a->merge(b) | array_merge(a, b) | Объединение одного или нескольких массивов |
| a->pad() | array_pad(a, b) | Массив дополняется до указанной длины, заполняясь значением b |
Integer
Доступны следующие встроенные методы целочисленного типа:
| ООП | Процедурный |
| i->abs() | abs(i) |