Telegram Web Link
Какова цель функции «array_map» в PHP и как её использовать?

Функция array_map() в PHP используется для применения заданной функции к каждому элементу массива. Она создает новый массив, содержащий результаты применения функции к каждому элементу исходного массива. Функция обратного вызова применяется к каждому элементу последовательно, и ключи сохраняются.

В этом примере функция square() применяется к каждому элементу массива $numbers с использованием array_map(), что приводит к созданию нового массива $squaredNumbers, где каждый элемент является квадратом соответствующего элемента исходного массива.

#вопросы_с_собеседований
👍113🤣1
Знаете ли вы, что Laravel поставляется с методом «preventStrayRequests()», позволяющим избежать реальных запросов во время тестирования? Это удобно не только для сторонних API, но и для локальных API. В то время как ваши тесты могут пройти локально, потому что все окружение работает, они могут провалиться в CI-конвейере. Это происходит потому, что в конвейере CI обычно активен только тот сервис, который вы тестируете, поэтому выполнение фактических запросов к недоступным API приведет к неудаче вашего набора.
👍84🥰1💩1
💡 Совет по Laravel

Знаете ли вы... Во время итерации в цикле foreach внутри цикла будет доступна переменная $loop.

Эта переменная предоставляет доступ к некоторым полезным битам информации.
10🔥1💩1
This media is not supported in your browser
VIEW IN TELEGRAM
💡Совет по Laravel

Используйте "wasRecentlyCreated", чтобы проверить, была ли модель создана или найдена в базе данных.
👍124💩2
Простое решение для параллельного выполнения PHP-кода.

Этот пакет предназначен для параллельного выполнения кода и создания пула процессов для выполнения различных задач (например, queue workers).
4
Полный курс PHP для начинающих и продвинутых

Full PHP 8 Tutorial
How To Install PHP & What Are Web Servers
Basic PHP Syntax
What Are Constants & Variable Variables In PHP
PHP Data Types - Typecasting Overview & How It Works
PHP Boolean Data Type
PHP Integer Data type
PHP Float Data Type
PHP String Data Type - Heredoc & Nowdoc Syntax
PHP Null Data Type

На данный момент доступно 139 видео
👍10🔥62
Какие есть типы индексов в бд?

Использование индексов в базах данных подразумевает их создание, просмотр и удаление для оптимизации запросов. Индексы ускоряют операции чтения (SELECT), но могут замедлить операции записи (INSERT, UPDATE, DELETE).

Общий синтаксис создания индекса выглядит следующим образом:

CREATE INDEX имя_индексаON имя_таблицы (столбец1 [ASC|DESC], столбец2 [ASC|DESC]);


Вот основные типы индексов:

1. Кластерные индексы (Clustered Index)
🔸 Упорядочивают данные в таблице в соответствии с индексом.
🔸 Каждая таблица может иметь только один кластерный индекс, так как физический порядок строк определяется им.
🔸 Пример: Первичный ключ часто создается как кластерный индекс.

Преимущества:

🔹 Быстрый доступ к данным в диапазонных запросах.
🔹 Эффективно при выборке упорядоченных данных.

Недостатки:

🔹 Медленные операции вставки, обновления и удаления, так как данные переносятся для сохранения порядка.

2. Некластерные индексы (Non-Clustered Index)
🔸 Содержат указатели на фактические строки данных.
🔸 Таблица может иметь несколько некластерных индексов.
🔸 Пример: Индексация столбца, который часто используется в условиях WHERE.

Преимущества:

🔹 Быстрый доступ к конкретным значениям.
🔹 Может использоваться для оптимизации запросов с различными столбцами.

Недостатки:

🔹 Дополнительное использование дискового пространства.
🔹 Замедление операций вставки, обновления и удаления.

3. Уникальные индексы (Unique Index)
🔸 Обеспечивают уникальность значений в одном или нескольких столбцах.
🔸 Пример: Индекс на email-адрес в таблице пользователей.

Преимущества:

🔹 Поддерживает целостность данных.
🔹 Повышает производительность запросов.

Недостатки:

🔹 Невозможно хранить дублирующиеся значения.

4. Составные индексы (Composite Index)
🔸 Создаются на основе нескольких столбцов.
🔸 Пример: Индекс на столбцы (lastname, firstname).

Преимущества:

🔹 Улучшает производительность запросов, где используются все или часть индекса.

Недостатки:

🔹 Требует внимательного проектирования, чтобы учитывать порядок столбцов.

5. Полнотекстовые индексы (Full-Text Index)
🔸 Используются для поиска текстовых данных, таких как документы или длинные текстовые поля.
🔸 Пример: Полнотекстовый поиск по колонке description в таблице товаров.

Преимущества:

🔹 Оптимизирован для поиска ключевых слов или фраз.

Недостатки:

🔹 Поддерживается не всеми СУБД.
🔹 Может занимать значительное место.

6. Битмап-индексы (Bitmap Index)
🔸 Представляют данные в виде битовых карт.
🔸 Чаще всего используются в столбцах с низкой кардинальностью (небольшим количеством уникальных значений).

Преимущества:

🔹 Эффективны для аналитических запросов и запросов с большими объемами данных.

Недостатки:

🔹 Не подходят для таблиц с частыми изменениями данных.

7. XML/JSON Индексы
🔸 Оптимизируют поиск в данных, хранящихся в XML или JSON-форматах.

Преимущества:

🔹 Ускоряют сложные запросы по вложенным структурам.

Недостатки:

🔹 Занимают дополнительное пространство.
🔹 Ограниченная поддержка в некоторых СУБД.

8. Пространственные индексы (Spatial Index)
🔸 Используются для работы с географическими и пространственными данными.
🔸 Пример: Индексация координат в базе данных геоинформационных систем.

Преимущества:

🔹 Эффективны для запросов, связанных с расстояниями, полигонами и геометрией.

9. Хэш-индексы (Hash Index)
🔸 Используют хэш-функции для индексирования данных.
🔸 Пример: Подходит для равенства (например, WHERE column = value).

Преимущества:

🔹 Очень быстрые запросы на точное совпадение.

Недостатки:

🔹 Не поддерживают диапазонные запросы.
👍6🔥64
🛠️Использование Laravel Tinker в Chrome DevTools

Статья о том, как интегрировать Laravel Tinker с Chrome DevTools для более удобной отладки и тестирования кода прямо в браузере.
Это позволяет быстрее проверять и экспериментировать с кодом Laravel, используя привычные инструменты Chrome.

https://www.amitmerchant.com/laravel-tinker-chrome-devtools/
7
This media is not supported in your browser
VIEW IN TELEGRAM
Совет по Laravel 💡

Один из моих любимых недокументированных советов, который я регулярно использую. Используйте "wasRecentlyCreated", чтобы проверить, была ли модель создана или найдена в базе данных.
👍11
Оптимизация SQL-запросов в PHP: избавляемся от тормозов! 🚀

Сегодня я покажу вам, как улучшить производительность SQL-запросов в PHP и избавиться от лишней нагрузки на базу данных.

1. Используйте подготовленные запросы
Не только защита от SQL-инъекций, но и кеширование запросов внутри СУБД!
Пример с PDO:


$stmt = $pdo->prepare("SELECT * FROM users WHERE email = :email");
$stmt->execute(['email' => $email]);
$user = $stmt->fetch();


2. Выбирайте только нужные данные
Зачем вам SELECT *, если нужно только id и name? Выбирайте только нужные колонки!


$stmt = $pdo->query("SELECT id, name FROM users");


3. Индексы – ваши друзья
Проверяйте, есть ли индексы на полях, которые часто используются в WHERE и JOIN. Без индексов база будет делать полный перебор строк!


CREATE INDEX idx_email ON users(email);


4. Избегайте N+1 запроса
Вместо 100 мелких запросов – один с JOIN.

Плохо (100 запросов в цикле!):


foreach ($users as $user) {
$stmt = $pdo->prepare("SELECT * FROM orders WHERE user_id = ?");
$stmt->execute([$user['id']]);
$orders[$user['id']] = $stmt->fetchAll();
}


Хорошо (один запрос):


$query = "SELECT users.id, users.name, orders.id as order_id
FROM users
LEFT JOIN orders ON users.id = orders.user_id";
$stmt = $pdo->query($query);
$result = $stmt->fetchAll();


5. Используйте кеширование
Храните частые запросы в Redis или Memcached, чтобы снизить нагрузку на базу.


$cacheKey = "users_list";
$users = $redis->get($cacheKey);

if (!$users) {
$users = $pdo->query("SELECT id, name FROM users")->fetchAll();
$redis->setex($cacheKey, 3600, json_encode($users));
}


Эти советы помогут вам ускорить ваш PHP-код, снизить нагрузку на базу данных и сделать сайт более отзывчивым.
👍186
Неиспользуемые определения в статическом анализе Behat

Разработчик поделился опытом оптимизации работы с тестами Behat. Он заметил, что некоторые определения, используемые в сценариях тестирования, больше не применяются и могут быть удалены. Это позволяет уменьшить объем кода, который нужно поддерживать и обновлять. Однако стандартные инструменты Behat не позволяют автоматически находить такие неиспользуемые элементы.

Проблема

Определения для тестов в Behat задаются специальными аннотациями или атрибутами. Эти определения используются в сценариях тестирования, записанных в feature-файлах. Со временем, по мере изменения сценариев, некоторые определения могут остаться невостребованными, но разработчики часто не замечают этого из-за высокой нагрузки и сосредоточенности на основной работе.

Решение через статический анализ
Для выявления неиспользуемых определений был предложен инструмент статического анализа. Он выполняет следующие шаги:

🔸Сканирует PHP-файлы на наличие определений (аннотации и атрибуты).
🔸Выделяет точные совпадения, регулярные выражения и именованные маски.
🔸Сопоставляет их с содержимым feature-файлов.

Пример анализа:

🔹Найдено 1036 определений: 747 точных, 106 с регулярными выражениями, 181 с именованными масками.
🔹Обнаружены 2 неиспользуемых определения, которые можно удалить.

Инструмент для работы: Behastan
Для реализации этого подхода был создан инструмент Behastan, интегрированный в утилиту Rector Swiss Knife. Она поддерживает проекты вплоть до PHP 7.2 и проста в использовании:

1. Установите утилиту:
composer require rector/swiss-knife --dev


2. Запустите анализ:
vendor/bin/swiss-knife behastan tests


Этот инструмент помогает поддерживать чистоту кода и предотвращает накопление ненужных определений. Подключив его к CI/CD, можно автоматизировать процесс и избежать ручных проверок.
👍42🥰1
2025/10/01 06:42:22
Back to Top
HTML Embed Code: