PHPackages                             belca/finfo - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [File &amp; Storage](/categories/file-storage)
4. /
5. belca/finfo

ActiveLibrary[File &amp; Storage](/categories/file-storage)

belca/finfo
===========

Fileinfo for Dios CMS

v1.1.3(7y ago)039MITPHP

Since Apr 11Pushed 7y ago1 watchersCompare

[ Source](https://github.com/belcacomponents/FInfo)[ Packagist](https://packagist.org/packages/belca/finfo)[ RSS](/packages/belca-finfo/feed)WikiDiscussions master Synced 2w ago

READMEChangelog (1)Dependencies (1)Versions (4)Used By (0)

FInfo
=====

[](#finfo)

FInfo (расшифровывается как Fileinfo - информация о файле) - расширяемый пакет для извлечения сведений из метаданных файла и/или на основе контента файла.

Изначально FInfo разработан для Dios CMS, но может независимо использоваться в любом PHP-проекте.

Что может FInfo?
----------------

[](#что-может-finfo)

По умолчанию пакет имеет минимальные возможности для работы с файлами (может извлечь минимум информации из файла).

**Пакет используется для предоставления единого интерфейса для извлечения сведений из файлов с разными MIME-типами**. Поэтому для работы с конкретными свойствами или типами файлов необходимо устанавливать или разрабатывать собственные классы или пакеты, затем подключать их с помощью методов класса в Fileinfo.

### Класс Fileinfo

[](#класс-fileinfo)

Класс Fileinfo предоставляет набор методов для работы с классами-обработчиками (классы извлекающие данные из файлов) и набор методов для извлечения информации из файлов.

В таблице перечислены основные методы класса. Более подробная информация содержится в самих классах.

Метод классаОписаниеaddClass($className)Добавляет указанный класс в список классов-обработчиков. Добавляемый класс должен быть расширен классом FileExplorer.getClasses()Возвращает список добавленных классов.file($filename, $virtualProperties = null)Возвращает сведения о файле. Если в параметре $virtualProperties указан список *виртуальных свойств*, то будут возвращены указанные виртуальные свойства.getFileinfo($filename, $virtualProperty)Возвращает информацию конкретного виртуального свойства указанного файла.Как использовать FInfo?
=======================

[](#как-использовать-finfo)

Установите FInfo через composer (хранилище Packagist) или сделав клон с репозитория Github.

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

```
// Подключите основной класс Fileinfo и классы-обработчики
use Belca\FInfo\Fileinfo; // Основной
use Belca\FInfo\BasicFileinfo; // Базовый класс-обработчик

...

// Добавьте классы-обработчики в список обработчиков
Fileinfo::addClass(BasicFileinfo::class);

...

// Извлеките всю информацию о файле
Fileinfo::file($filename);

// Output:
// [
//     [created] => 1531556313
//     [edited] => 1531556313
//     [size] => 9399
//     [filesize] => 9399
// ]

// Получите информацию о конкретных виртуальных свойствах
Fileinfo::file($filename, ['created', 'size');

// Output:
// [
//     [created] => 1531556313
//     [size] => 9399
// ]

// Если вы укажите несуществующее виртуальное свойство, то ошибок не будет. Свойство не будет возвращено.
Fileinfo::file($filename, ['created', 'edited', 'size', 'length');

// Output:
// [
//     [created] => 1531556313
//     [edited] => 1531556313
//     [size] => 9399
//     [filesize] => 9399
// ]

// Получите информацию только об одном виртуальном свойстве
Fileinfo::getFileinfo($filename, 'size');

// Output: 9399

// Или
Fileinfo::file($filename, ['size']);

// Output:
// [
//     [size] => 9399
// ]

// Или
Fileinfo::file($filename, 'size');

// [
//     [size] => 9399
// ]

```

Расширение Fileinfo и FileExplorer
----------------------------------

[](#расширение-fileinfo-и-fileexplorer)

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

Вы можете посмотреть исходный код класса BasicFileinfo. Он достаточно простой и хорошо показывает как создать новый класс-обработчик для извлечения виртуальных свойств.

```
// Используйте абстрактный класс для создания нового обработчика
use Belca\FInfo\FileExplorer;

class ImageColorFileinfo extends FileExplorer
{

// При необходимости, вы можете задать алиасы существующих виртуальных свойств или указать используемые методы извлечения виртуального свойства
protected static $aliases = [
    'humanColor' => 'color',
    // or
    'colorForHuman' => 'getColorProperty',
];

// Если обработчик работает только с определенными типами данных, то их можно перечислить в $mimes;
protected static $mimes => ['image/png', 'image/jpeg'];

// Реализуйте метод проверки совместимости с файлом
public function checkCompatibility()
{
    // Код проверяющий возможность обработки файла
    // При успешной проверке верните true.
    // Если обработчик работает со всеми типами файлов, то также верните true, желательно проверив существование файла в этом методе или в методе извлекающим виртуальное свойство файла

    return true;
}

// Добавьте необходимые "извлекаторы" (методы извлекающие свойства файла) в класс
public function getColorProperty()
{
    if ($this->checkCompatibility() {
        // Код метода с возвращением полученного значения

        return $color;
    }

    // При неудачной обработке или проверки совместимости верните false

    return false;
}

```

Как видно, реализовать собственного обработчика действительно просто, нужно только разместить код обрабатывающий файл и извлекающий свойства файла.

Подключите реализуемый класс в место добавления класса-обработчика и добавьте его в класс Fileinfo с помощью метода *addClass*.

```
use Belca\FInfo\Fileinfo; // Основной
use Belca\FInfo\ImageColorFileinfo; // Класс извлекающий цвет из изображения

...

// Добавляем в список обработчиков файла
Fileinfo::addClass(ImageColorFileinfo::class);

```

Определения FInfo
=================

[](#определения-finfo)

Для более понятной работы с пакетом FInfo были введены некоторые абстрактные понятия.

Виртуальные свойства, методы извлечения, алиасы и значения
----------------------------------------------------------

[](#виртуальные-свойства-методы-извлечения-алиасы-и-значения)

Для получения информации о файле (свойств файла) используются виртуальные свойства, алиасы и методы извлечения.

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

На самом деле, **виртуальное свойство** - название метода класса для получения значения свойства файла измеряемое одним значением или набором значений (массивом), а в**иртуальное значение** - рассчитанное или извлеченное значение на основе данных файла и возвращаемое определенным методом (виртуальным свойством).

Примеры виртуальных значений
----------------------------

[](#примеры-виртуальных-значений)

Примерами виртуальных свойств будут:

- средний цвет изображения для человека;
- основные цвета изображения;
- создатель файла (изображения, аудиотрека, видеофайла и т.п.);
- координаты места создания фотографии;
- размер файла;
- длительность файла (аудиофайла, видеофайла, анимации);
- дата создания файла и т.д.

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

Лицензия
--------

[](#лицензия)

Пакет распространяется по лицензии [MIT](https://opensource.org/licenses/mit-license.php).

###  Health Score

27

—

LowBetter than 47% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity62

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~9 days

Total

3

Last Release

2619d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/1146772?v=4)[dios](/maintainers/dios)[@Dios](https://github.com/Dios)

---

Top Contributors

[![dmitrach](https://avatars.githubusercontent.com/u/19969187?v=4)](https://github.com/dmitrach "dmitrach (9 commits)")

---

Tags

fileinfobelcadiosdioscms

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/belca-finfo/health.svg)

```
[![Health](https://phpackages.com/badges/belca-finfo/health.svg)](https://phpackages.com/packages/belca-finfo)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
