Вбудовані методи

Як було зазначено раніше, 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)