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