WebSource
WebSource предоставляет статические вспомогательные методы для работы с базой данных, массивами и файлами изображений. Создавать экземпляр класса не нужно.Поддерживает
- генерацию уникального значения для колонки в таблице
- генерацию уникального ключа в массиве
- поиск элемента массива по значению поля
- получение пути к миниатюре изображения с запасным вариантом
Быстрый старт
$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 и т. д.:
$slug = WebSource::getUniqueTableValue('posts', 'slug', 'new-article');Чтобы проверять уникальность только среди записей с определённым условием:
$slug = WebSource::getUniqueTableValue('posts', 'slug', 'intro', ['type' => 'page']);Чтобы исключить текущую запись при редактировании:
$slug = WebSource::getUniqueTableValue('posts', 'slug', 'intro', [], ['id' => 5]);Чтобы ограничить длину результата:
$slug = WebSource::getUniqueTableValue('posts', 'slug', 'very-long-title', [], [], null, 30);Если суффикс не вмещается в $maxLength, метод выбрасывает RuntimeException.
Работа с массивами
getUniqueArrayKey($array, $key)
Возвращает ключ, уникальный среди ключей массива $array. Если $key уже занят, добавляет суффикс -1, -2 и т. д.:
$key = WebSource::getUniqueArrayKey($data, 'item');
$data[$key] = $newItem;getArrayElementByValue(array $array, string $key, mixed $value): ?array
Возвращает первый элемент массива, у которого поле $key равно $value. Если совпадений нет, возвращает null:
$product = WebSource::getArrayElementByValue($products, 'id', 42);
if ($product !== null) {
echo $product['title'];
}Изображения
getImageMiniature(string $path = ''): string
Возвращает путь к изображению. Если файл не существует, возвращает путь к запасному изображению img-miniature.webp:
$src = WebSource::getImageMiniature($post['image']);
echo '<img src="' . $src . '">';Если $path — полный URL, возвращает его без изменений.