WebSource


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

Поддерживает

  • генерацию уникального значения для колонки в таблице
  • генерацию уникального ключа в массиве
  • поиск элемента массива по значению поля
  • получение пути к миниатюре изображения с запасным вариантом

Быстрый старт

php
$slug = WebSource::getUniqueTableValue('pages', 'slug', 'about');
// 'about' если свободно, иначе 'about-1', 'about-2' и т. д.

Работа с базой данных

getUniqueTableValue(string $table, string $key, string $value, array $where = [], array $exclude = [], ?Database $db = null, ?int $maxLength = null): string

Генерирует значение, уникальное в колонке $key таблицы $table. Если $value уже занято, добавляет суффикс -1, -2 и т. д.:

php
$slug = WebSource::getUniqueTableValue('posts', 'slug', 'new-article');

Чтобы проверять уникальность только среди записей с определённым условием:

php
$slug = WebSource::getUniqueTableValue('posts', 'slug', 'intro', ['type' => 'page']);

Чтобы исключить текущую запись при редактировании:

php
$slug = WebSource::getUniqueTableValue('posts', 'slug', 'intro', [], ['id' => 5]);

Чтобы ограничить длину результата:

php
$slug = WebSource::getUniqueTableValue('posts', 'slug', 'very-long-title', [], [], null, 30);

Если суффикс не вмещается в $maxLength, метод выбрасывает RuntimeException.

Работа с массивами

getUniqueArrayKey($array, $key)

Возвращает ключ, уникальный среди ключей массива $array. Если $key уже занят, добавляет суффикс -1, -2 и т. д.:

php
$key = WebSource::getUniqueArrayKey($data, 'item');
$data[$key] = $newItem;

getArrayElementByValue(array $array, string $key, mixed $value): ?array

Возвращает первый элемент массива, у которого поле $key равно $value. Если совпадений нет, возвращает null:

php
$product = WebSource::getArrayElementByValue($products, 'id', 42);
if ($product !== null) {
    echo $product['title'];
}

Изображения

getImageMiniature(string $path = ''): string

Возвращает путь к изображению. Если файл не существует, возвращает путь к запасному изображению img-miniature.webp:

php
$src = WebSource::getImageMiniature($post['image']);
echo '<img src="' . $src . '">';

Если $path — полный URL, возвращает его без изменений.