<commit_before>Компонент
=========
Yii-додатки складаються з компонентів-обʼєктів, створених згідно специфікацій.
Компонент (component) — це екземпляр класу [CComponent] або похідного від нього.
Використання компоненту в основному включає доступ до його властивостей, а також виклик і обробку його подій. 
Базовий клас [CComponent] встановлює те, як визначаються властивості та події.

Визначення і використання властивостей компонента
-------------------------------------------------

Властивість компонента схожа на публічну змінну-член класу (public member variable). 
Ми можемо читати або встановлювати його значення. Наприклад:

~~~
[php]
$width=$component->textWidth; // отримуємо значення властивості textWidth
$component->enableCaching=true; // встановлюємо значення властивості enableCaching
~~~

Існують два різні способи визначення властивостей компонента. 
Перший шлях це просто оголосити публічну змінну у класі компонента, 
наприклад:

~~~
[php]
class Document extends CComponent
{
    public $textWidth;
}
~~~

Інший спосіб полягає у використанні методів отримання (getter) та встановлення (setter).
Цей спосіб більш гнучкий, оскільки додатково до звичайних властивостей 
ви можете оголосити властивість тільки для читання або тільки для запису.

~~~
[php]
class Document extends CComponent
{
    private $_textWidth;
    protected $_readOnly=false;

    public function getTextWidth()
    {
        return $this->_textWidth;
    }

    public function setTextWidth($value)
    {
        $this->_textWidth=$value;
    }

    public function getTextHeight()
    {
        // розраховує та повертає висоту тексту
    }

    public function setReadOnly($value)
    {
        $this->_readOnly=$value;
    }
}
~~~

Компонент вище, можна використовувати наступним чином:

~~~
[php]
$document=new Document();

// ми можемо писати та читати textWidth
$document->textWidth=100;
echo $document->textWidth;

// ми можемо тільки читати textHeight
echo $document->textHeight;

// ми можемо тільки писати readOnly
$document->readOnly=true;
~~~

При спробі прочитати властивість компонента і властивість не визначена, 
як відкритий член класу (public class member), 
Yii намагатиметься використовувати метод отримання (getter), наприклад
для `textWidth` метод отримання буде `getTextWidth`. 
Те ж саме відбувається при спробі запису властивості, яка не визначена як відкритий член класу.

Якщо існує метод-отримувач (getter), але відсутній метод-встановлювач (setter) —
властивість компонента стає доступною тільки для читання та генерує виключення при спробі
запису в неї. Якщо ж це навпаки, властивість доступна тільки для запису.

Використання методів отримання та встановлення для визначення властивості має
користь у тому, що додаткові дії (такі як перевірка, виклик події)
можуть бути виконані при читанні і запису властивості.

>Note|Примітка: Є невелика різниця у визначенні властивості через методи та через просте<commit_msg>[UK][Guide] Fixing property name<commit_after>Компонент
=========
Yii-додатки складаються з компонентів-обʼєктів, створених згідно специфікацій.
Компонент (component) — це екземпляр класу [CComponent] або похідного від нього.
Використання компоненту в основному включає доступ до його властивостей, а також виклик і обробку його подій. 
Базовий клас [CComponent] встановлює те, як визначаються властивості та події.

Визначення і використання властивостей компонента
-------------------------------------------------

Властивість компонента схожа на публічну змінну-член класу (public member variable). 
Ми можемо читати або встановлювати його значення. Наприклад:

~~~
[php]
$width=$component->textWidth; // отримуємо значення властивості textWidth
$component->enableCaching=true; // встановлюємо значення властивості enableCaching
~~~

Існують два різні способи визначення властивостей компонента. 
Перший шлях це просто оголосити публічну змінну у класі компонента, 
наприклад:

~~~
[php]
class Document extends CComponent
{
    public $textWidth;
}
~~~

Інший спосіб полягає у використанні методів отримання (getter) та встановлення (setter).
Цей спосіб більш гнучкий, оскільки додатково до звичайних властивостей 
ви можете оголосити властивість тільки для читання або тільки для запису.

~~~
[php]
class Document extends CComponent
{
    private $_textWidth;
    protected $_completed=false;

    public function getTextWidth()
    {
        return $this->_textWidth;
    }

    public function setTextWidth($value)
    {
        $this->_textWidth=$value;
    }

    public function getTextHeight()
    {
        // розраховує та повертає висоту тексту
    }

    public function setCompleted($value)
    {
        $this->_completed=$value;
    }
}
~~~

Компонент вище, можна використовувати наступним чином:

~~~
[php]
$document=new Document();

// ми можемо писати та читати textWidth
$document->textWidth=100;
echo $document->textWidth;

// ми можемо тільки читати textHeight
echo $document->textHeight;

// ми можемо тільки писати completed
$document->completed=true;
~~~

При спробі прочитати властивість компонента і властивість не визначена, 
як відкритий член класу (public class member), 
Yii намагатиметься використовувати метод отримання (getter), наприклад
для `textWidth` метод отримання буде `getTextWidth`. 
Те ж саме відбувається при спробі запису властивості, яка не визначена як відкритий член класу.

Якщо існує метод-отримувач (getter), але відсутній метод-встановлювач (setter) —
властивість компонента стає доступною тільки для читання та генерує виключення при спробі
запису в неї. Якщо ж це навпаки, властивість доступна тільки для запису.

Використання методів отримання та встановлення для визначення властивості має
користь у тому, що додаткові дії (такі як перевірка, виклик події)
можуть бути виконані при читанні і запису властивості.

>Note|Примітка: Є невелика різниця у визначенні властивості через методи та через просте
{'fraction_non_alphanumeric': 0.08582089552238806, 'fraction_numerical': 0.0010176390773405698, 'mean_word_length': 4.3511796733212345, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 23, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2536039', 'n_tokens_mistral': 2223, 'n_tokens_neox': 2776, 'n_words': 628}