Skip to content

DTO like library to fetch any data in an Object-Oriented manner.

License

Notifications You must be signed in to change notification settings

Falseclock/dbd-php-entity

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

DBD-PHP-Entity

scrutinizer build Coverage Status PHP Version Require

Latest Stable Version Total Downloads Latest Unstable Version License

NOTICE: readme находится Π² процСссС написания.

Данная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° позволяСт Π»Π΅Π³ΠΊΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ассоциативныС массивы Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠΎ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ структурам (ΠΌΠ°ΠΏΠΈΠ½Π³Ρƒ), ΠΈΠ½Ρ‹ΠΌΠΈ словами Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ DTO. Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ рСализовывался ΠΊΠ°ΠΊ ORM Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, Π½ΠΎ Π½Π΅ ограничиваСтся этим. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ структурированныС Π΄Π°Π½Π½Ρ‹Π΅, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ ΠΈΡ… поля.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ дСйствия Π½Π° ΠΏΠ°Π»ΡŒΡ†Π°Ρ…

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ, Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Π°, с нСсколькими полями:

test=# select currency_id, currency_name, currency_short_name, currency_symbol,currency_code FROM currencies;
 currency_id |    currency_name    | currency_short_name | currency_symbol | currency_code
-------------+---------------------+---------------------+-----------------+---------------
         505 | Π”ΠΎΠ»Π»Π°Ρ€ БША          | Π”ΠΎΠ»Π»Π°Ρ€              | $               | USD
          36 | ΠšΠ°Π·Π°Ρ…ΡΡ‚Π°Π½ΡΠΊΠΈΠΉ Π’Π΅Π½Π³Π΅ | Π’Π΅Π½Π³Π΅               | β‚Έ               | KZT
         506 | Российский Π ΡƒΠ±Π»ΡŒ    | Π ΡƒΠ±Π»ΡŒ               | β‚½               | RUB
         548 | Π•Π²Ρ€ΠΎ                | Π•Π²Ρ€ΠΎ                | €               | EUR
(4 строки)

Π”Π°Π½Π½Ρ‹Π΅ ΠΈΠ· этой Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· Π½Π΅ΠΊΠΈΠΉ PDO ΠΈ Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ массив.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ элСмСнтам, Π²Π°ΠΌ явно Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ поля:

$item['currency_name'];
$item['currency_symbol'];

Если Π·Π°Ρ€Π°Π½Π΅Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³, Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ вмСсто ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ массива:

$objects = [];
foreach ($array as $item) {
    $objects[] = new Currency($item);
}
// ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ значСниям Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊ: 
$objects[0]->name;
$objects[0]->symbol;

Π­Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Π½Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΊ наимСнованиям ΠΏΠΎΠ»Π΅ΠΉ. Волько Π»ΠΈ для Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ данная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°? НСт. МоТно ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ структуры, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ YAML Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ просто ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ JSON Π΄Π°Π½Π½Ρ‹Π΅. НуТны Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ структуры? НуТны Π³Π΅Ρ‚Ρ‚Π΅Ρ€Ρ‹ ΠΈ сэттСры? НуТна ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ конвСртация Π΄Π°Π½Π½Ρ‹Ρ…? Π­Ρ‚ΠΎ всС Π΅ΡΡ‚ΡŒ, ΠΈ Π΄Π°ΠΆΠ΅ большС. МоТно ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…, Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ структур, ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ поля, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΡ… Π²ΠΎ Π²Π½Π΅ΡˆΠ½ΡƒΡŽ срСду ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‡Π΅Π³ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ. ΠŸΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π² вашСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅? Π’ΠΎΠ³Π΄Π° Π²ΠΏΠ΅Ρ€Π΅Π΄ с установки.

Установка

composer require falseclock/dbd-php-entity

ОглавлСниС

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ классы

ОписаниС полСй

Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ классы

Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ классы


Mapper

Π›ΡŽΠ±ΠΎΠ΅ описаниС ΠΌΠΎΠ΄Π΅Π»ΠΈ начинаСтся с наслСдования этого абстрактного класса. Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ нСскольким простым ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ:

  1. ВсС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с Ρ‚ΠΈΠΏΠΎΠΌ Column ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ public.
  2. Π›ΡŽΠ±Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΊΡ€ΠΎΠΌΠ΅ Column, ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ protected.
  3. Класс Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ private ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….
  4. Класс Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.
  5. ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π° ANNOTATION Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π°.
  6. НазваниС класса Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΎΠΆΠ΅ самоС Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ‡Ρ‚ΠΎ ΠΈ основной класс Entity с постфиксом Map.
  7. Оба класс Entity ΠΈ Mapper Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΌ namespace.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

class City extends Entity {

}

class CityMap extends Mapper
{
    const ANNOTATION = "Data description";
}

ΠŸΠΎΡΡ‚Ρ„ΠΈΠΊΡ Map, ΠΏΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· константу Maper::POSTFIX

ВсС ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΈ Mapper класса являСтся синглтонами ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· статичный ΠΌΠ΅Ρ‚ΠΎΠ΄ me.

ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹


__get

__get β€” магичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ для доступа ΠΊ protected ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ класса.

ОписаниС

public __get(string $property): mixed

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях, ΠΏΡ€ΠΈ нСобходимости обращСния ΠΊ Π½Π΅ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Π² IDE, ΠΌΠΎΠΆΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· phpdoc Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ класса ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‡Π΅Ρ€Π΅Π· @property, которая доступна Ρ‡Π΅Ρ€Π΅Π· магичСский ΠΌΠ΅Ρ‚ΠΎΠ΄. Если ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π±Ρ€ΠΎΡˆΠ΅Π½ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

/**
 * Class MapperGet
 * @property Embedded $Regions
 * @property Complex $Address
 */
class MapperGet extends Mapper
{
    const ANNOTATION = "Data description";

    /** @var Embedded */
    protected $Regions = [
        Embedded::NAME => "country_regions",
        Embedded::ENTITY_CLASS => Region::class,
    ];

    /**  @var Complex */
    protected $Address = [
        Complex::TYPE => Address::class,
    ];
}

findColumnByOriginName

findColumnByOriginName β€” ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ экзСмпляра класса Column Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ»ΡŽΡ‡ ассоциативного массива.

ОписаниС

public findColumnByOriginName(string $originName): Column

ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован, Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊ описываСтся Ρ‚ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ΅ public ΠΏΠΎΠ»Π΅ Π² Mapper классС.


getAllVariables

getAllVariables β€” ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ всСх ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… класса

ОписаниС

public getAllVariables(): MapperVariables

ПолСзная функция, Ссли имССтся Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π° основании описания ΠΏΠΎΠ»Π΅ΠΉ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ скрипт создания Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² рСляционной Π±Π°Π·Π΅.


getAnnotation

getAnnotation β€” ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ константы ANNOTATION

ОписаниС

public getAnnotation(): string

getColumns

getColumns β€” ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ массива стандартных ΠΏΠΎΠ»Π΅ΠΉ

ОписаниС

public getColumns(): array

Данная функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив Columns, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² Mapper классС. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ комплСксныС поля ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ public.


getComplex

getComplex β€” ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ массива комплСксных ΠΏΠΎΠ»Π΅ΠΉ

ОписаниС

public getComplex(): array

Данная функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив Complex, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² Mapper классС. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ комплСксныС поля ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ protected.


getConstraints

getConstraints β€” ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ массива ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ

ОписаниС

public getConstraints(): array

Данная функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив Constraint, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² Mapper классС. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ограничСния ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ protected.


getEmbedded

getEmbedded β€” ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ массива встроСнных ΠΏΠΎΠ»Π΅ΠΉ

ОписаниС

public getEmbedded(): array

Данная функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив Embedded, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² Mapper классС. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ встроСнныС поля ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ protected.


getEntityClass

getEntityClass β€” ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³

ОписаниС

public getEntityClass(): string

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ остороТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ссли Π²Ρ‹ Π½Π΅ объявили Entity ΠΈ Mapper Π² ΠΎΠ΄Π½ΠΎΠΌ namespace


getOriginFieldNames

getOriginFieldNames β€” ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ массива ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Ρ… public ΠΏΠΎΠ»Π΅ΠΉ

ОписаниС

public getOriginFieldNames(): array

Данная функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ассоциативный массив, Π³Π΄Π΅ ΠΊΠ»ΡŽΡ‡ β€” Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ класса Mapper, Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ β€” Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ поля.