Как упоминалось ранее, 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

Char

Доступны следующие встроенные методы char:

ООП Процедурный
ch->toHex() sprintf(“%X”, ch)

Integer

Доступны следующие встроенные методы целочисленного типа:

ООП Процедурный
i->abs() abs(i)

Содержание.

Предыдушая  Следующая