PHPackages                             fi1a/facade - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. fi1a/facade

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

fi1a/facade
===========

Фасад (Facade)

0621PHP

Since Feb 21Pushed 3y ago1 watchersCompare

[ Source](https://github.com/fi1a/facade)[ Packagist](https://packagist.org/packages/fi1a/facade)[ RSS](/packages/fi1a-facade/feed)WikiDiscussions master Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

Фасад (Facade)
==============

[](#фасад-facade)

[![Latest Version](https://camo.githubusercontent.com/6700edc64232b1ac3140e696ad391fc051370a98dfabdfed84f011050b5903f8/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f666931612f6661636164653f6c6162656c3d72656c65617365)](https://packagist.org/packages/fi1a/facade)[![Software License](https://camo.githubusercontent.com/d089b009c735accb2425221e793e5fa0d92b897b4ce0a540d1b4aa31c034c7e1/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f666931612f6661636164653f7374796c653d666c61742d737175617265)](https://github.com/fi1a/facade/blob/master/LICENSE)[![PHP Version](https://camo.githubusercontent.com/02f37dd9316ebca993790a9cb1f41e08a2683acc077acc573a92c4c9b9f6b869/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f666931612f6661636164653f7374796c653d666c61742d737175617265)](https://php.net)[![Coverage Status](https://camo.githubusercontent.com/0c967d746eb7f4fe28065a3b94d23faa207cd6f4a968535b20fce0310a87cf89/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636f7665726167652d3130302532352d677265656e)](https://camo.githubusercontent.com/0c967d746eb7f4fe28065a3b94d23faa207cd6f4a968535b20fce0310a87cf89/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636f7665726167652d3130302532352d677265656e)[![Total Downloads](https://camo.githubusercontent.com/571d54095eaf20c826ea51dfb8602ca35bceb47b9e13ac53a57def71516b352b/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f666931612f6661636164652e7376673f7374796c653d666c61742d73717561726526636f6c6f72423d6d656469756d76696f6c6574726564)](https://packagist.org/packages/fi1a/facade)[![Support mail](https://camo.githubusercontent.com/116fa0d447870a3a6c6c1f4b296c889707a6e30a69c2b28cbe8d0f6f5c3d4920/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d61696c2d737570706f7274253430666931612e72752d627269676874677265656e)](mailto:support@fi1a.ru)

Фасады предоставляют "статический" интерфейс для классов, используют динамические методы для проксирования вызовов методов к объектам, созданным в фабричном методе.

Установка
---------

[](#установка)

Установить этот пакет можно как зависимость, используя Composer.

```
composer require fi1a/facade
```

Использование
-------------

[](#использование)

Допустим у нас есть класс `Foo\Bar`.

```
namespace Foo;

class Bar
{
    public function baz()
    {
        return $this;
    }

    public function qux(string $value): string
    {
        return $value;
    }
}
```

Для доступа к его методам через "статический" интерфейс используется фасад `Facades\BarFacade`. Любые фасады, должны расширять абстрактный класс `Fi1a\Facade\AbstractFacade` и реализовывать метод `protected static function factory(): object` возвращающий экземпляр объекта класса. В примере метод `protected static function factory(): object` возвращает экземпляр класса `Foo\Bar`.

```
namespace Facades;

use Fi1a\Facade\AbstractFacade;
use Foo\Bar;

/**
 * Фасад класса Foo\Bar
 *
 * @method static Bar baz()
 * @method static string qux(string $value)
 */
class BarFacade extends AbstractFacade
{

    /**
     * @inheritDoc
     */
    protected static function factory(): object
    {
        return new Bar();
    }
}
```

Вызов методов класса `Foo\Bar` через фасад.

```
echo \Facades\BarFacade::baz()->qux('value'); // "value"
```

Фвбричный метод может возвращать всегда новый экземпляр класса или единожды созданный. Создание экземпляра класса можно возложить на [Dependency injection container](https://github.com/fi1a/dependency-injection).

Пример единожды созданного через Dependency injection container экземпляра класса. Сначала необходимо в конфигурацию Dependency injection container задать определение созданное с помощью builder'а:

```
di()->config()->addDefinition(
    Builder::build(Foo\BarInterface::class)
        ->defineFactory(function () {
            static $instance;

            if ($instance === null) {
                $instance = new Foo\Bar();
            }

            return $instance;
        })
        ->getDefinition()
);
```

Фасад использующий Dependency injection container

```
namespace Facades;

use Fi1a\Facade\AbstractFacade;
use Foo\Bar;

/**
 * Фасад класса Foo\Bar
 *
 * @method static Bar baz()
 * @method static string qux(string $value)
 */
class BarFacade extends AbstractFacade
{

    /**
     * @inheritDoc
     */
    protected static function factory(): object
    {
        return di()->get(Foo\BarInterface::class); // Foo\BarInterface
    }
}
```

###  Health Score

17

—

LowBetter than 8% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity16

Limited adoption so far

Community4

Small or concentrated contributor base

Maturity22

Early-stage or recently created project

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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/d4f26c1adaa632741fadf55b1328cbd22ac91282aecfae2027d105df0ddedee4?d=identicon)[fi1a](/maintainers/fi1a)

---

Tags

facadephp

### Embed Badge

![Health badge](/badges/fi1a-facade/health.svg)

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

###  Alternatives

[inkvizytor/fluentform

Form builder for Laravel

3316.1k](/packages/inkvizytor-fluentform)[axllent/silverstripe-cms-tweaks

Several CMS usability improvements

1826.0k1](/packages/axllent-silverstripe-cms-tweaks)[webchemistry/forms-wizard

Wizard component for nette/forms

159.2k](/packages/webchemistry-forms-wizard)

PHPackages © 2026

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