Iščete orodje za ustvarjanje kode PHP za razrede, funkcije ali celotne datoteke?
-- Podpira vse najnovejše funkcije PHP (kot so enumi itd.)
+- Podpira vse najnovejše funkcije PHP (kot so kavlji za lastnosti, enumi, atributi itd.)
- Omogoča enostavno spreminjanje obstoječih razredov
- Izhod je skladen s slogom kodiranja PSR-12 / PER
- Zrela, stabilna in široko uporabljena knjižnica
@@ -634,6 +634,88 @@ class Demo
```
+Kljuke za lastnino .[#toc-property-hooks]
+-----------------------------------------
+
+Opredelite lahko tudi lastnostne kljuke (ki jih predstavlja razred [PropertyHook |api:Nette\PhpGenerator\PropertyHook]) za operacije get in set, kar je funkcija, uvedena v PHP 8.4:
+
+```php
+$class = new Nette\PhpGenerator\ClassType('Demo');
+$prop = $class->addProperty('firstName')
+ ->setType('string');
+
+$prop->addHook('set', 'strtolower($value)')
+ ->addParameter('value')
+ ->setType('string');
+
+$prop->addHook('get')
+ ->setBody('return ucfirst($this->firstName);');
+
+echo $class;
+```
+
+To generira:
+
+```php
+class Demo
+{
+ public string $firstName {
+ set(string $value) => strtolower($value);
+ get {
+ return ucfirst($this->firstName);
+ }
+ }
+}
+```
+
+Lastnosti in kavlji so lahko abstraktni ali končni:
+
+```php
+$class->addProperty('id')
+ ->setType('int')
+ ->addHook('get')
+ ->setAbstract();
+
+$class->addProperty('role')
+ ->setType('string')
+ ->addHook('set', 'strtolower($value)')
+ ->setFinal();
+```
+
+
+Asimetrična vidljivost .[#toc-asymmetric-visibility]
+----------------------------------------------------
+
+PHP 8.4 uvaja asimetrično vidnost lastnosti. Nastavite lahko različne ravni dostopa za branje in pisanje.
+
+Vidnost lahko nastavite z metodo `setVisibility()` z dvema parametroma ali z uporabo metod `setPublic()`, `setProtected()` ali `setPrivate()` s parametrom `mode`, ki določa, ali vidnost velja za pridobivanje ali nastavljanje lastnosti. Privzet način je `'get'`.
+
+```php
+$class = new Nette\PhpGenerator\ClassType('Demo');
+
+$class->addProperty('name')
+ ->setType('string')
+ ->setVisibility('public', 'private'); // public for read, private for write
+
+$class->addProperty('id')
+ ->setType('int')
+ ->setProtected('set'); // protected for write
+
+echo $class;
+```
+
+Pri tem se ustvari:
+
+```php
+class Demo
+{
+ public private(set) string $name;
+
+ protected(set) int $id;
+}
+```
+
+
Imenski prostor .[#toc-namespace]
---------------------------------
@@ -867,10 +949,10 @@ $property = $manipulator->inheritProperty('foo');
$property->setValue('new value');
```
-Metoda `implementInterface()` samodejno implementira vse metode iz danega vmesnika v vaš razred:
+Metoda `implement()` samodejno implementira vse metode in lastnosti danega vmesnika ali abstraktnega razreda:
```php
-$manipulator->implementInterface(SomeInterface::class);
+$manipulator->implement(SomeInterface::class);
// Zdaj vaš razred implementira SomeInterface in vključuje vse njegove metode
```
@@ -892,6 +974,6 @@ echo $dumper->dump($var); // natisne ['a', 'b', 123]
Preglednica združljivosti .[#toc-compatibility-table]
-----------------------------------------------------
-PhpGenerator 4.0 in 4.1 sta združljiva s PHP 8.0 do 8.3
+PhpGenerator 4.1 je združljiv s PHP 8.0 do 8.4.
{{leftbar: nette:@menu-topics}}
diff --git a/php-generator/tr/@home.texy b/php-generator/tr/@home.texy
index 6d27983caf..de83484c59 100644
--- a/php-generator/tr/@home.texy
+++ b/php-generator/tr/@home.texy
@@ -4,7 +4,7 @@ PHP Kod Oluşturucu
Sınıflar, fonksiyonlar veya tüm dosyalar için PHP kodu üretecek bir araç mı arıyorsunuz?
-- En son PHP özelliklerini destekler (enumlar vb. gibi)
+- En yeni PHP özelliklerini destekler (özellik kancaları, enumlar, nitelikler vb. gibi)
- Mevcut sınıfları kolayca değiştirmenizi sağlar
- PSR-12 / PER kodlama stili ile uyumlu çıkış
- Olgun, kararlı ve yaygın olarak kullanılan kütüphane
@@ -634,6 +634,88 @@ class Demo
```
+Mülkiyet Kancaları .[#toc-property-hooks]
+-----------------------------------------
+
+Ayrıca, PHP 8.4'te tanıtılan bir özellik olan get ve set işlemleri için özellik kancaları ( [PropertyHook |api:Nette\PhpGenerator\PropertyHook] sınıfı ile temsil edilir) tanımlayabilirsiniz:
+
+```php
+$class = new Nette\PhpGenerator\ClassType('Demo');
+$prop = $class->addProperty('firstName')
+ ->setType('string');
+
+$prop->addHook('set', 'strtolower($value)')
+ ->addParameter('value')
+ ->setType('string');
+
+$prop->addHook('get')
+ ->setBody('return ucfirst($this->firstName);');
+
+echo $class;
+```
+
+Bu üretir:
+
+```php
+class Demo
+{
+ public string $firstName {
+ set(string $value) => strtolower($value);
+ get {
+ return ucfirst($this->firstName);
+ }
+ }
+}
+```
+
+Özellikler ve özellik kancaları soyut veya nihai olabilir:
+
+```php
+$class->addProperty('id')
+ ->setType('int')
+ ->addHook('get')
+ ->setAbstract();
+
+$class->addProperty('role')
+ ->setType('string')
+ ->addHook('set', 'strtolower($value)')
+ ->setFinal();
+```
+
+
+Asimetrik Görünürlük .[#toc-asymmetric-visibility]
+--------------------------------------------------
+
+PHP 8.4 özellikler için asimetrik görünürlük sunar. Okuma ve yazma için farklı erişim seviyeleri ayarlayabilirsiniz.
+
+Görünürlük, iki parametreli `setVisibility()` yöntemi kullanılarak veya görünürlüğün özelliği almak veya ayarlamak için geçerli olup olmadığını belirten `mode` parametresiyle birlikte `setPublic()`, `setProtected()` veya `setPrivate()` kullanılarak ayarlanabilir. Varsayılan mod `'get'` şeklindedir.
+
+```php
+$class = new Nette\PhpGenerator\ClassType('Demo');
+
+$class->addProperty('name')
+ ->setType('string')
+ ->setVisibility('public', 'private'); // public for read, private for write
+
+$class->addProperty('id')
+ ->setType('int')
+ ->setProtected('set'); // protected for write
+
+echo $class;
+```
+
+Bu üretir:
+
+```php
+class Demo
+{
+ public private(set) string $name;
+
+ protected(set) int $id;
+}
+```
+
+
İsim Alanı .[#toc-namespace]
----------------------------
@@ -867,10 +949,10 @@ $property = $manipulator->inheritProperty('foo');
$property->setValue('new value');
```
- `implementInterface()` yöntemi, sınıfınızda verilen arayüzdeki tüm yöntemleri otomatik olarak uygular:
+`implement()` yöntemi, verilen arayüz veya soyut sınıftaki tüm yöntem ve özellikleri otomatik olarak uygular:
```php
-$manipulator->implementInterface(SomeInterface::class);
+$manipulator->implement(SomeInterface::class);
// Şimdi sınıfınız SomeInterface'i uyguluyor ve tüm yöntemlerini içeriyor
```
@@ -892,6 +974,6 @@ echo $dumper->dump($var); // prints ['a', 'b', 123]
Uyumluluk Tablosu .[#toc-compatibility-table]
---------------------------------------------
-PhpGenerator 4.0 ve 4.1 PHP 8.0 ila 8.3 ile uyumludur
+PhpGenerator 4.1 PHP 8.0 ila 8.4 ile uyumludur.
{{leftbar: nette:@menu-topics}}
diff --git a/php-generator/uk/@home.texy b/php-generator/uk/@home.texy
index 3a6c88f616..345772c711 100644
--- a/php-generator/uk/@home.texy
+++ b/php-generator/uk/@home.texy
@@ -4,7 +4,7 @@
Ви шукаєте інструмент для генерації PHP-коду для класів, функцій або цілих файлів?
-- Підтримує всі найновіші можливості PHP (наприклад, перерахування тощо).
+- Підтримує всі найновіші можливості PHP (наприклад, хуки властивостей, зчислення, атрибути тощо).
- Дозволяє легко модифікувати існуючі класи
- Вихід, сумісний зі стилем кодування PSR-12 / PER
- Зріла, стабільна та широко використовувана бібліотека
@@ -634,6 +634,88 @@ class Demo
```
+Хуки властивостей .[#toc-property-hooks]
+----------------------------------------
+
+Ви також можете визначати хуки властивостей (представлені класом [PropertyHook |api:Nette\PhpGenerator\PropertyHook]) для операцій get і set - ця функція з'явилася в PHP 8.4:
+
+```php
+$class = new Nette\PhpGenerator\ClassType('Demo');
+$prop = $class->addProperty('firstName')
+ ->setType('string');
+
+$prop->addHook('set', 'strtolower($value)')
+ ->addParameter('value')
+ ->setType('string');
+
+$prop->addHook('get')
+ ->setBody('return ucfirst($this->firstName);');
+
+echo $class;
+```
+
+Це генерує:
+
+```php
+class Demo
+{
+ public string $firstName {
+ set(string $value) => strtolower($value);
+ get {
+ return ucfirst($this->firstName);
+ }
+ }
+}
+```
+
+Властивості та хуки властивостей можуть бути абстрактними або кінцевими:
+
+```php
+$class->addProperty('id')
+ ->setType('int')
+ ->addHook('get')
+ ->setAbstract();
+
+$class->addProperty('role')
+ ->setType('string')
+ ->addHook('set', 'strtolower($value)')
+ ->setFinal();
+```
+
+
+Асиметрична видимість .[#toc-asymmetric-visibility]
+---------------------------------------------------
+
+У PHP 8.4 введено асиметричну видимість властивостей. Ви можете встановити різні рівні доступу для читання і запису.
+
+Видимість можна встановити або за допомогою методу `setVisibility()` з двома параметрами, або за допомогою `setPublic()`, `setProtected()`, або `setPrivate()` з параметром `mode`, який вказує, чи застосовується видимість до отримання або встановлення властивості. За замовчуванням використовується режим `'get'`.
+
+```php
+$class = new Nette\PhpGenerator\ClassType('Demo');
+
+$class->addProperty('name')
+ ->setType('string')
+ ->setVisibility('public', 'private'); // public for read, private for write
+
+$class->addProperty('id')
+ ->setType('int')
+ ->setProtected('set'); // protected for write
+
+echo $class;
+```
+
+Це генерує
+
+```php
+class Demo
+{
+ public private(set) string $name;
+
+ protected(set) int $id;
+}
+```
+
+
Простір імен .[#toc-namespace]
------------------------------
@@ -867,10 +949,10 @@ $property = $manipulator->inheritProperty('foo');
$property->setValue('new value');
```
-Метод `implementInterface()` автоматично реалізує всі методи з даного інтерфейсу у вашому класі:
+Метод `implement()` автоматично реалізує всі методи і властивості з даного інтерфейсу або абстрактного класу:
```php
-$manipulator->implementInterface(SomeInterface::class);
+$manipulator->implement(SomeInterface::class);
// Тепер ваш клас реалізує SomeInterface і включає всі його методи
```
@@ -892,6 +974,6 @@ echo $dumper->dump($var); // prints ['a', 'b', 123]
Таблиця сумісності .[#toc-compatibility-table]
----------------------------------------------
-PhpGenerator 4.0 і 4.1 сумісні з PHP 8.0 до 8.3
+PhpGenerator 4.1 сумісний з версіями PHP від 8.0 до 8.4.
{{leftbar: nette:@menu-topics}}