20 функций PHP, которые вы должны знать в 2023 году
1. str_contains()
:
Проверяет, содержится ли строка в другой строке.
$sentence = "The quick brown 🦊 jumps over the lazy 🐶.";
$word = "🦊";
if (str_contains($sentence, $word)) {
echo "The sentence contains the word 🦊.";
}
2. str_starts_with()
:
Проверяет, начинается ли строка с заданной подстроки.
$sentence = "🚀 Launching into space!";
if (str_starts_with($sentence, "🚀")) {
echo "The sentence starts with a rocket emoji!";
}
3. str_ends_with()
:
Проверяет, заканчивается ли строка заданной подстрокой.
$sentence = "It's a beautiful day! ☀️";
if (str_ends_with($sentence, "☀️")) {
echo "The sentence ends with a sun emoji!";
}
4. get_debug_type()
:
Возвращает тип переменной.
$num = 42;
echo get_debug_type($num); // "integer"
5. get_resource_id()
:
Возвращает уникальный идентификатор данного ресурса.
$file = fopen('test.txt', 'r');
echo get_resource_id($file); // e.g., "7"
6. fdiv()
:
Функция деления, включающая поддержку деления на ноль.
$result = fdiv(10, 0); // INF
7. preg_last_error_msg()
:
Возвращает удобочитаемое сообщение о последней ошибке выполнения регулярного выражения PCRE.
preg_match('/(/', '');
echo preg_last_error_msg(); // "missing )"
8. array_key_first()
:
Возвращает первый ключ массива.
$array = ['🍏'=>'Apple', '🍊'=>'Orange', '🍇'=>'Grape'];
echo array_key_first($array); // "🍏"
9. array_key_last()
:
Возвращает последний ключ массива.
$array = ['🍏'=>'Apple', '🍊'=>'Orange', '🍇'=>'Grape'];
echo array_key_last($array); // "🍇"
10. ErrorException::getSeverity()
:
Возвращает серьёзность ошибки.
try {
trigger_error("Custom error", E_USER_WARNING);
} catch (ErrorException $e) {
echo $e->getSeverity(); // 512
}
11. Функции фильтра:
PHP 8 представил несколько новых функций фильтрации. Вот пример использования filter_var
с FILTER_VALIDATE_BOOL
:
var_dump(filter_var('yes', FILTER_VALIDATE_BOOL)); // bool(true)
12. WeakMap
:
WeakMap
— это коллекция (map) или словарь, содержащий ссылки на объекты, что не предотвращает сборку мусора для этих объектов.
$weakmap = new WeakMap();
$obj = new stdClass();
$weakmap[$obj] = 'Hello, world!';
13. Объекты-Значения:
PHP 8 представил Constructor Property Promotion — Определение свойств объекта в конструкторе, новый синтаксис для создания Объектов-Значений.
class Money {
public function __construct(
public int $amount,
public string $currency
) {}
}
$tenDollars = new Money(10, 'USD');
14. Выражение Match
:
Оператор подобный switch
.
echo match (1) {
0 => '🚫',
1 => '✅',
default => '⁉️',
};
15. Оператор Nullsafe:
Новый оператор ?->
позволяет проверять значение NULL
при доступе к свойствам или методам.
class User {
public function getAddress(): ?Address {
// returns Address or null
}
}
$user = new User();
$country = $user?->getAddress()?->country; // no error if getAddress() returns null
16. Именованные аргументы:
Эта функция позволяет передавать значения в функцию, указывая имя значения.
new Money(amount: 10, currency: 'USD');
17. Атрибуты:
Атрибуты, также известные как аннотации в других языках программирования.
#[Attribute]
class ExampleAttribute {}
#[ExampleAttribute]
class ExampleClass {}
18. Определение свойств объекта в конструкторе:
Эта функция позволяет объединить свойства класса и конструктор в одном объявлении.
class Money {
public function __construct(
public int $amount,
public string $currency
) {}
}
19. Объединение типов:
Эта функция позволяет использовать объявление типов, которые могут быть одним из нескольких типов.
function print_id(int|string $id): void {
echo 'ID: ' . $id;
}
20. JIT-Компиляция
PHP 8 представил два механизма JIT-компиляции: Tracing JIT и Function JIT.
Примечание: JIT-компиляция — это не та функция, которую вы можете напрямую продемонстрировать с помощью фрагмента кода, но это важное улучшение в PHP 8, которое может обеспечить значительное повышение производительности.
В заключение, PHP — это постоянно развивающийся язык со множеством интересных новых возможностей и улучшений. Независимо от того, являетесь ли вы опытным PHP разработчиком или новичком, стоит потратить время на знакомство с этими новыми возможностями и их использование в своём коде. Оставайтесь любопытными, продолжайте учиться и удачного кодирования!🚀