diff --git a/php-generator/bg/@home.texy b/php-generator/bg/@home.texy index 80b6ed7027..081f668ebd 100644 --- a/php-generator/bg/@home.texy +++ b/php-generator/bg/@home.texy @@ -4,7 +4,7 @@
Търсите ли инструмент за генериране на PHP код за класове, функции или цели файлове? -- Поддържа всички най-нови функции на PHP (като enums и др.) +- Поддържа всички най-нови функции на 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); // отпечатва ['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}} diff --git a/php-generator/cs/@home.texy b/php-generator/cs/@home.texy index 241b06e39e..8c98156677 100644 --- a/php-generator/cs/@home.texy +++ b/php-generator/cs/@home.texy @@ -4,7 +4,7 @@ Generátor PHP kódu
Hledáte nástroj pro generování PHP kódu tříd, funkcí či kompletních souborů? -- Umí všechny nejnovější vychytávky v PHP (jako enumy atd.) +- Umí všechny nejnovější vychytávky v PHP (jako property hooks, enumy, atributy atd.) - Umožní vám snadno modifikovat existující třídy - Výstupní kód je v souladu s PSR-12 / PER coding style - Zralá, stabilní a široce používaná knihovna @@ -634,6 +634,88 @@ class Demo ``` +Property Hooks +-------------- + +Pomocí property hooks (reprezentované třídou [PropertyHook|api:Nette\PhpGenerator\PropertyHook]) můžete definovat operace get a set pro vlastnosti, což je funkce zavedená 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; +``` + +Vygeneruje: + +```php +class Demo +{ + public string $firstName { + set(string $value) => strtolower($value); + get { + return ucfirst($this->firstName); + } + } +} +``` + +Property a property hooks mohou být abstraktní nebo finální: + +```php +$class->addProperty('id') + ->setType('int') + ->addHook('get') + ->setAbstract(); + +$class->addProperty('role') + ->setType('string') + ->addHook('set', 'strtolower($value)') + ->setFinal(); +``` + + +Asymetrická viditelnost +----------------------- + +PHP 8.4 zavádí asymetrickou viditelnost pro vlastnosti. Můžete nastavit různé úrovně přístupu pro čtení a zápis. + +Viditelnost lze nastavit buď pomocí metody `setVisibility()` se dvěma parametry, nebo pomocí `setPublic()`, `setProtected()` nebo `setPrivate()` s parametrem `mode`, který určuje, zda se viditelnost vztahuje ke čtení nebo zápisu vlastnosti. Výchozí režim je `'get'`. + +```php +$class = new Nette\PhpGenerator\ClassType('Demo'); + +$class->addProperty('name') + ->setType('string') + ->setVisibility('public', 'private'); // public pro čtení, private pro zápis + +$class->addProperty('id') + ->setType('int') + ->setProtected('set'); // protected pro zápis + +echo $class; +``` + +Vygeneruje: + +```php +class Demo +{ + public private(set) string $name; + + protected(set) int $id; +} +``` + + Jmenný prostor -------------- @@ -867,10 +949,10 @@ $property = $manipulator->inheritProperty('foo'); $property->setValue('new value'); ``` -Metoda `implementInterface()` automaticky implementuje všechny metody z daného rozhraní ve vaší třídě: +Metoda `implement()` automaticky implementuje všechny metody a vlastnosti z daného rozhraní nebo abstraktní třídy ve vaší třídě: ```php -$manipulator->implementInterface(SomeInterface::class); +$manipulator->implement(SomeInterface::class); // Nyní vaše třída implementuje SomeInterface a obsahuje všechny jeho metody ``` @@ -892,6 +974,6 @@ echo $dumper->dump($var); // vypíše ['a', 'b', 123] Tabulka kompatibility --------------------- -PhpGenerator 4.0 a 4.1 jsou kompatibilní s PHP 8.0 až 8.3. +PhpGenerator 4.1 je kompatibilní s PHP 8.0 až 8.4. {{leftbar: nette:@menu-topics}} diff --git a/php-generator/de/@home.texy b/php-generator/de/@home.texy index de0662647b..2af051777d 100644 --- a/php-generator/de/@home.texy +++ b/php-generator/de/@home.texy @@ -4,7 +4,7 @@ PHP-Code-Generator
Suchen Sie ein Tool, um PHP-Code für Klassen, Funktionen oder komplette Dateien zu generieren? -- Unterstützt alle aktuellen PHP-Funktionen (wie Enums, etc.) +- Unterstützt alle aktuellen PHP-Funktionen (wie Property Hooks, Enums, Attribute usw.) - Ermöglicht die einfache Änderung bestehender Klassen - Ausgabe in Übereinstimmung mit PSR-12 / PER-Kodierung - Ausgereifte, stabile und weit verbreitete Bibliothek @@ -634,6 +634,88 @@ class Demo ``` +Eigentumshaken .[#toc-property-hooks] +------------------------------------- + +Sie können auch Property Hooks (repräsentiert durch die Klasse [PropertyHook |api:Nette\PhpGenerator\PropertyHook]) für Get- und Set-Operationen definieren, eine Funktion, die in PHP 8.4 eingeführt wurde: + +```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; +``` + +Dies erzeugt: + +```php +class Demo +{ + public string $firstName { + set(string $value) => strtolower($value); + get { + return ucfirst($this->firstName); + } + } +} +``` + +Eigenschaften und Eigenschaftshaken können abstrakt oder endgültig sein: + +```php +$class->addProperty('id') + ->setType('int') + ->addHook('get') + ->setAbstract(); + +$class->addProperty('role') + ->setType('string') + ->addHook('set', 'strtolower($value)') + ->setFinal(); +``` + + +Asymmetrische Sichtbarkeit .[#toc-asymmetric-visibility] +-------------------------------------------------------- + +PHP 8.4 führt eine asymmetrische Sichtbarkeit für Eigenschaften ein. Sie können unterschiedliche Zugriffsebenen für das Lesen und Schreiben festlegen. + +Die Sichtbarkeit kann entweder mit der Methode `setVisibility()` mit zwei Parametern oder mit `setPublic()`, `setProtected()` oder `setPrivate()` mit dem Parameter `mode` eingestellt werden, der angibt, ob die Sichtbarkeit für das Abrufen oder Setzen der Eigenschaft gilt. Der Standardmodus ist `'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; +``` + +Dies erzeugt: + +```php +class Demo +{ + public private(set) string $name; + + protected(set) int $id; +} +``` + + Namensraum .[#toc-namespace] ---------------------------- @@ -867,10 +949,10 @@ $property = $manipulator->inheritProperty('foo'); $property->setValue('new value'); ``` -Die Methode `implementInterface()` implementiert automatisch alle Methoden der angegebenen Schnittstelle in Ihrer Klasse: +Die Methode `implement()` implementiert automatisch alle Methoden und Eigenschaften der angegebenen Schnittstelle oder abstrakten Klasse: ```php -$manipulator->implementInterface(SomeInterface::class); +$manipulator->implement(SomeInterface::class); // Ihre Klasse implementiert nun SomeInterface und enthält alle seine Methoden ``` @@ -892,6 +974,6 @@ echo $dumper->dump($var); // druckt ['a', 'b', 123] Kompatibilitätstabelle .[#toc-compatibility-table] -------------------------------------------------- -PhpGenerator 4.0 und 4.1 sind kompatibel mit PHP 8.0 bis 8.3 +PhpGenerator 4.1 ist kompatibel mit PHP 8.0 bis 8.4. {{leftbar: nette:@menu-topics}} diff --git a/php-generator/el/@home.texy b/php-generator/el/@home.texy index ca87244ab6..f20c5f2feb 100644 --- a/php-generator/el/@home.texy +++ b/php-generator/el/@home.texy @@ -4,7 +4,7 @@
Ψάχνετε ένα εργαλείο για τη δημιουργία κώδικα PHP για κλάσεις, συναρτήσεις ή πλήρη αρχεία; -- Υποστηρίζει όλα τα τελευταία χαρακτηριστικά της PHP (όπως enums κ.λπ.) +- Υποστηρίζει όλα τα τελευταία χαρακτηριστικά της PHP (όπως αγκίστρια ιδιοτήτων, enums, attributes, κ.λπ.) - Σας επιτρέπει να τροποποιείτε εύκολα τις υπάρχουσες κλάσεις - Έξοδος συμβατή με το στυλ κωδικοποίησης 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); // εκτυπώνει ['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}} diff --git a/php-generator/en/@home.texy b/php-generator/en/@home.texy index ccd879bf4a..31c48659c2 100644 --- a/php-generator/en/@home.texy +++ b/php-generator/en/@home.texy @@ -4,7 +4,7 @@ PHP Code Generator
Are you looking for a tool to generate PHP code for classes, functions, or complete files? -- Supports all the latest PHP features (like enums, etc.) +- Supports all the latest PHP features (like property hooks, enums, attributes, etc.) - Allows you to easily modify existing classes - Output compliant with PSR-12 / PER coding style - Mature, stable, and widely used library @@ -634,6 +634,88 @@ class Demo ``` +Property Hooks +-------------- + +You can also define property hooks (represented by the class [PropertyHook|api:Nette\PhpGenerator\PropertyHook]) for get and set operations, a feature introduced in 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; +``` + +This generates: + +```php +class Demo +{ + public string $firstName { + set(string $value) => strtolower($value); + get { + return ucfirst($this->firstName); + } + } +} +``` + +Properties and property hooks can be abstract or final: + +```php +$class->addProperty('id') + ->setType('int') + ->addHook('get') + ->setAbstract(); + +$class->addProperty('role') + ->setType('string') + ->addHook('set', 'strtolower($value)') + ->setFinal(); +``` + + +Asymmetric Visibility +--------------------- + +PHP 8.4 introduces asymmetric visibility for properties. You can set different access levels for reading and writing. + +The visibility can be set using either the `setVisibility()` method with two parameters, or by using `setPublic()`, `setProtected()`, or `setPrivate()` with the `mode` parameter that specifies whether the visibility applies to getting or setting the property. The default mode is `'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; +``` + +This generates: + +```php +class Demo +{ + public private(set) string $name; + + protected(set) int $id; +} +``` + + Namespace --------- @@ -867,10 +949,10 @@ $property = $manipulator->inheritProperty('foo'); $property->setValue('new value'); ``` -The `implementInterface()` method automatically implements all methods from the given interface in your class: +The `implement()` method automatically implements all methods and properties from the given interface or abstract class: ```php -$manipulator->implementInterface(SomeInterface::class); +$manipulator->implement(SomeInterface::class); // Now your class implements SomeInterface and includes all its methods ``` @@ -892,6 +974,6 @@ echo $dumper->dump($var); // outputs ['a', 'b', 123] Compatibility Table ------------------- -PhpGenerator 4.0 and 4.1 are compatible with PHP 8.0 to 8.3. +PhpGenerator 4.1 is compatible with PHP 8.0 to 8.4. {{leftbar: nette:@menu-topics}} diff --git a/php-generator/es/@home.texy b/php-generator/es/@home.texy index 0ee0eb3d70..9a9e8cc1cd 100644 --- a/php-generator/es/@home.texy +++ b/php-generator/es/@home.texy @@ -4,7 +4,7 @@ Generador de código PHP
¿Está buscando una herramienta para generar código PHP para clases, funciones o archivos completos? -- Soporta todas las últimas características de PHP (como enums, etc.) +- Soporta todas las últimas características de PHP (como ganchos de propiedades, enums, atributos, etc.) - Le permite modificar fácilmente las clases existentes - Salida conforme con el estilo de codificación PSR-12 / PER - Biblioteca madura, estable y ampliamente utilizada @@ -634,6 +634,88 @@ class Demo ``` +Ganchos para propiedades .[#toc-property-hooks] +----------------------------------------------- + +También puede definir ganchos de propiedad (representados por la clase [PropertyHook |api:Nette\PhpGenerator\PropertyHook]) para operaciones get y set, una característica introducida en 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; +``` + +Esto genera: + +```php +class Demo +{ + public string $firstName { + set(string $value) => strtolower($value); + get { + return ucfirst($this->firstName); + } + } +} +``` + +Las propiedades y los ganchos de propiedades pueden ser abstractos o finales: + +```php +$class->addProperty('id') + ->setType('int') + ->addHook('get') + ->setAbstract(); + +$class->addProperty('role') + ->setType('string') + ->addHook('set', 'strtolower($value)') + ->setFinal(); +``` + + +Visibilidad asimétrica .[#toc-asymmetric-visibility] +---------------------------------------------------- + +PHP 8.4 introduce visibilidad asimétrica para las propiedades. Puede establecer diferentes niveles de acceso para lectura y escritura. + +La visibilidad puede establecerse usando el método `setVisibility()` con dos parámetros, o usando `setPublic()`, `setProtected()`, o `setPrivate()` con el parámetro `mode` que especifica si la visibilidad se aplica a obtener o establecer la propiedad. El modo por defecto es `'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; +``` + +Esto genera: + +```php +class Demo +{ + public private(set) string $name; + + protected(set) int $id; +} +``` + + Espacio de nombres .[#toc-namespace] ------------------------------------ @@ -867,10 +949,10 @@ $property = $manipulator->inheritProperty('foo'); $property->setValue('new value'); ``` -El método `implementInterface()` implementa automáticamente todos los métodos de la interfaz dada en su clase: +El método `implement()` implementa automáticamente todos los métodos y propiedades de la interfaz o clase abstracta dada: ```php -$manipulator->implementInterface(SomeInterface::class); +$manipulador->implementar(CiertaInterfaz::clase); // Ahora tu clase implementa CiertaInterfaz e incluye todos sus métodos ``` @@ -892,6 +974,6 @@ echo $dumper->dump($var); // imprime ['a', 'b', 123] Tabla de compatibilidad .[#toc-compatibility-table] --------------------------------------------------- -PhpGenerator 4.0 y 4.1 son compatibles con PHP 8.0 a 8.3 +PhpGenerator 4.1 es compatible con PHP 8.0 a 8.4. {{leftbar: nette:@menu-topics}} diff --git a/php-generator/fr/@home.texy b/php-generator/fr/@home.texy index d0279a6c3a..9dc8e9c59e 100644 --- a/php-generator/fr/@home.texy +++ b/php-generator/fr/@home.texy @@ -4,7 +4,7 @@ Générateur de code PHP
Vous cherchez un outil pour générer du code PHP pour des classes, des fonctions ou des fichiers complets ? -- Supporte toutes les dernières fonctionnalités de PHP (comme les enums, etc.) +- Prend en charge toutes les dernières fonctionnalités de PHP (comme les crochets de propriété, les enums, les attributs, etc.) - Vous permet de modifier facilement les classes existantes - Sortie conforme au style de codage PSR-12 / PER - Bibliothèque mature, stable et largement utilisée @@ -634,6 +634,88 @@ class Demo ``` +Crochets de propriété .[#toc-property-hooks] +-------------------------------------------- + +Vous pouvez également définir des crochets de propriété (représentés par la classe [PropertyHook |api:Nette\PhpGenerator\PropertyHook]) pour les opérations get et set, une fonctionnalité introduite en 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; +``` + +Ceci génère : + +```php +class Demo +{ + public string $firstName { + set(string $value) => strtolower($value); + get { + return ucfirst($this->firstName); + } + } +} +``` + +Les propriétés et les crochets de propriété peuvent être abstraits ou finaux : + +```php +$class->addProperty('id') + ->setType('int') + ->addHook('get') + ->setAbstract(); + +$class->addProperty('role') + ->setType('string') + ->addHook('set', 'strtolower($value)') + ->setFinal(); +``` + + +Visibilité asymétrique .[#toc-asymmetric-visibility] +---------------------------------------------------- + +PHP 8.4 introduit la visibilité asymétrique pour les propriétés. Vous pouvez définir des niveaux d'accès différents pour la lecture et l'écriture. + +La visibilité peut être définie en utilisant la méthode `setVisibility()` avec deux paramètres, ou en utilisant `setPublic()`, `setProtected()`, ou `setPrivate()` avec le paramètre `mode` qui spécifie si la visibilité s'applique à l'obtention ou à la définition de la propriété. Le mode par défaut est `'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; +``` + +Ceci génère : + +```php +class Demo +{ + public private(set) string $name; + + protected(set) int $id; +} +``` + + Espace de nommage .[#toc-namespace] ----------------------------------- @@ -867,10 +949,10 @@ $property = $manipulator->inheritProperty('foo'); $property->setValue('new value'); ``` -La méthode `implementInterface()` implémente automatiquement toutes les méthodes de l'interface donnée dans votre classe : +La méthode `implement()` implémente automatiquement toutes les méthodes et propriétés de l'interface ou de la classe abstraite donnée : ```php -$manipulator->implementInterface(SomeInterface::class); +$manipulator->implement(SomeInterface::class) ; // Maintenant, votre classe implémente SomeInterface et inclut toutes ses méthodes ``` @@ -892,6 +974,6 @@ echo $dumper->dump($var); // imprime ['a', 'b', 123] Tableau de compatibilité .[#toc-compatibility-table] ---------------------------------------------------- -PhpGenerator 4.0 et 4.1 sont compatibles avec PHP 8.0 à 8.3 +PhpGenerator 4.1 est compatible avec PHP 8.0 à 8.4. {{leftbar: nette:@menu-topics}} diff --git a/php-generator/hu/@home.texy b/php-generator/hu/@home.texy index cd1cc89d34..3d9430d344 100644 --- a/php-generator/hu/@home.texy +++ b/php-generator/hu/@home.texy @@ -4,7 +4,7 @@ PHP kód generátor
Olyan eszközt keres, amellyel PHP kódot generálhat osztályokhoz, függvényekhez vagy teljes fájlokhoz? -- Támogatja az összes legújabb PHP-funkciót (például enums stb.) +- Támogatja az összes legújabb PHP funkciót (mint például a property hooks, enums, attribútumok, stb.) - Lehetővé teszi a meglévő osztályok egyszerű módosítását - PSR-12 / PER kódolási stílusnak megfelelő kimenet - Kiforrott, stabil és széles körben használt könyvtár @@ -634,6 +634,88 @@ class Demo ``` +Ingatlan horgok .[#toc-property-hooks] +-------------------------------------- + +A PHP 8.4-ben bevezetett funkció, a [PropertyHook |api:Nette\PhpGenerator\PropertyHook] osztály által képviselt PropertyHook horgok is definiálhatók a get és set műveletekhez: + +```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; +``` + +Ez generálja: + +```php +class Demo +{ + public string $firstName { + set(string $value) => strtolower($value); + get { + return ucfirst($this->firstName); + } + } +} +``` + +Tulajdonságok és tulajdonsághorgok lehetnek absztraktak vagy véglegesek: + +```php +$class->addProperty('id') + ->setType('int') + ->addHook('get') + ->setAbstract(); + +$class->addProperty('role') + ->setType('string') + ->addHook('set', 'strtolower($value)') + ->setFinal(); +``` + + +Aszimmetrikus láthatóság .[#toc-asymmetric-visibility] +------------------------------------------------------ + +A PHP 8.4 bevezeti a tulajdonságok aszimmetrikus láthatóságát. Különböző hozzáférési szinteket állíthat be az olvasáshoz és az íráshoz. + +A láthatóságot vagy a `setVisibility()` metódussal lehet beállítani két paraméterrel, vagy a `setPublic()`, `setProtected()` vagy `setPrivate()` metódussal a `mode` paraméterrel, amely megadja, hogy a láthatóság a tulajdonság megszerzésére vagy beállítására vonatkozik-e a tulajdonság. Az alapértelmezett mód a `'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; +``` + +Ez generálja: + +```php +class Demo +{ + public private(set) string $name; + + protected(set) int $id; +} +``` + + Namespace .[#toc-namespace] --------------------------- @@ -867,10 +949,10 @@ $property = $manipulator->inheritProperty('foo'); $property->setValue('new value'); ``` -A `implementInterface()` metódus automatikusan megvalósítja az adott interfész összes metódusát az osztályodban: +A `implement()` módszer automatikusan megvalósítja az adott interfész vagy absztrakt osztály összes metódusát és tulajdonságát: ```php -$manipulator->implementInterface(SomeInterface::class); +$manipulator->implement(SomeInterface::class); // Most az osztályod megvalósítja a SomeInterface-t és tartalmazza annak összes metódusát. ``` @@ -892,6 +974,6 @@ echo $dumper->dump($var); // prints ['a', 'b', 123] Kompatibilitási táblázat .[#toc-compatibility-table] ---------------------------------------------------- -A PhpGenerator 4.0 és 4.1 kompatibilis a PHP 8.0 és 8.3 közötti változatokkal. +A PhpGenerator 4.1 kompatibilis a PHP 8.0 és 8.4 között. {{leftbar: nette:@menu-topics}} diff --git a/php-generator/it/@home.texy b/php-generator/it/@home.texy index 5d3c701cc1..3bc908b6d6 100644 --- a/php-generator/it/@home.texy +++ b/php-generator/it/@home.texy @@ -4,7 +4,7 @@ Generatore di codice PHP
State cercando uno strumento per generare codice PHP per classi, funzioni o file completi? -- Supporta tutte le più recenti caratteristiche di PHP (come gli enum, ecc.) +- Supporta tutte le più recenti caratteristiche di PHP (come gli agganci per le proprietà, gli enum, gli attributi e così via). - Permette di modificare facilmente le classi esistenti - Uscita conforme allo stile di codifica PSR-12 / PER - Libreria matura, stabile e ampiamente utilizzata @@ -634,6 +634,88 @@ class Demo ``` +Ganci di proprietà .[#toc-property-hooks] +----------------------------------------- + +È possibile definire anche degli hook di proprietà (rappresentati dalla classe [PropertyHook |api:Nette\PhpGenerator\PropertyHook]) per le operazioni di get e set, una caratteristica introdotta in 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; +``` + +Questo genera: + +```php +class Demo +{ + public string $firstName { + set(string $value) => strtolower($value); + get { + return ucfirst($this->firstName); + } + } +} +``` + +Le proprietà e i ganci di proprietà possono essere astratti o finali: + +```php +$class->addProperty('id') + ->setType('int') + ->addHook('get') + ->setAbstract(); + +$class->addProperty('role') + ->setType('string') + ->addHook('set', 'strtolower($value)') + ->setFinal(); +``` + + +Visibilità asimmetrica .[#toc-asymmetric-visibility] +---------------------------------------------------- + +PHP 8.4 introduce la visibilità asimmetrica per le proprietà. È possibile impostare diversi livelli di accesso per la lettura e la scrittura. + +La visibilità può essere impostata utilizzando il metodo `setVisibility()` con due parametri, oppure utilizzando `setPublic()`, `setProtected()`, o `setPrivate()` con il parametro `mode` che specifica se la visibilità si applica a ottenere o impostare la proprietà. La modalità predefinita è `'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; +``` + +Questo genera: + +```php +class Demo +{ + public private(set) string $name; + + protected(set) int $id; +} +``` + + Spazio dei nomi .[#toc-namespace] --------------------------------- @@ -867,10 +949,10 @@ $property = $manipulator->inheritProperty('foo'); $property->setValue('new value'); ``` -Il metodo `implementInterface()` implementa automaticamente tutti i metodi dell'interfaccia data nella vostra classe: +Il metodo `implement()` implementa automaticamente tutti i metodi e le proprietà dell'interfaccia o della classe astratta indicata: ```php -$manipulator->implementInterface(SomeInterface::class); +$manipolatore->implementa(SomeInterface::class); // Ora la classe implementa SomeInterface e include tutti i suoi metodi ``` @@ -892,6 +974,6 @@ echo $dumper->dump($var); // stampa ['a', 'b', 123]. Tabella di compatibilità .[#toc-compatibility-table] ---------------------------------------------------- -PhpGenerator 4.0 e 4.1 sono compatibili con PHP 8.0-8.3. +PhpGenerator 4.1 è compatibile con PHP 8.0 - 8.4. {{leftbar: nette:@menu-topics}} diff --git a/php-generator/ja/@home.texy b/php-generator/ja/@home.texy index 8468614408..e0d7043629 100644 --- a/php-generator/ja/@home.texy +++ b/php-generator/ja/@home.texy @@ -4,7 +4,7 @@ PHP コードジェネレータ
クラスや関数、ファイル全体のPHPコードを生成するツールをお探しですか? -- 最新の PHP 機能 (enum など) をすべてサポートしています。 +- PHPの最新機能(プロパティ・フック、列挙型、属性など)をすべてサポート。 - 既存のクラスを簡単に修正することが可能 - PSR-12 / PERコーディングスタイルに準拠した出力 - 成熟し、安定し、広く使用されているライブラリ @@ -634,6 +634,88 @@ class Demo ``` +プロパティ・フック.[#toc-property-hooks] +------------------------------- + +これは 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 8.4 で導入された機能です: + +```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()` メソッドに2つのパラメータを指定するか、`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:en:@menu-topics}} diff --git a/php-generator/pl/@home.texy b/php-generator/pl/@home.texy index 3f68976960..2ecf613c33 100644 --- a/php-generator/pl/@home.texy +++ b/php-generator/pl/@home.texy @@ -4,7 +4,7 @@ Generator kodu PHP
Szukasz narzędzia do generowania kodu PHP dla klas, funkcji lub całych plików? -- Obsługuje wszystkie najnowsze funkcje PHP (takie jak wyliczenia itp.) +- Obsługuje wszystkie najnowsze funkcje PHP (takie jak haki właściwości, enumy, atrybuty itp.). - Pozwala na łatwą modyfikację istniejących klas - Wyjście zgodne ze stylem kodowania PSR-12 / PER - Dojrzała, stabilna i szeroko stosowana biblioteka @@ -634,6 +634,88 @@ class Demo ``` +Haki nieruchomości .[#toc-property-hooks] +----------------------------------------- + +Można również definiować haki właściwości (reprezentowane przez klasę [PropertyHook |api:Nette\PhpGenerator\PropertyHook]) dla operacji pobierania i ustawiania, funkcja wprowadzona w 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 generuje: + +```php +class Demo +{ + public string $firstName { + set(string $value) => strtolower($value); + get { + return ucfirst($this->firstName); + } + } +} +``` + +Właściwości i haki właściwości mogą być abstrakcyjne lub końcowe: + +```php +$class->addProperty('id') + ->setType('int') + ->addHook('get') + ->setAbstract(); + +$class->addProperty('role') + ->setType('string') + ->addHook('set', 'strtolower($value)') + ->setFinal(); +``` + + +Asymetryczna widoczność .[#toc-asymmetric-visibility] +----------------------------------------------------- + +PHP 8.4 wprowadza asymetryczną widoczność właściwości. Można ustawić różne poziomy dostępu dla odczytu i zapisu. + +Widoczność można ustawić za pomocą metody `setVisibility()` z dwoma parametrami lub za pomocą `setPublic()`, `setProtected()`, lub `setPrivate()` z parametrem `mode`, który określa, czy widoczność dotyczy pobierania czy ustawiania właściwości. Domyślnym trybem jest `'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; +``` + +To generuje: + +```php +class Demo +{ + public private(set) string $name; + + protected(set) int $id; +} +``` + + Przestrzeń nazw .[#toc-namespace] --------------------------------- @@ -867,10 +949,10 @@ $property = $manipulator->inheritProperty('foo'); $property->setValue('new value'); ``` -Metoda `implementInterface()` automatycznie implementuje wszystkie metody z danego interfejsu w klasie: +Metoda `implement()` automatycznie implementuje wszystkie metody i właściwości z danego interfejsu lub klasy abstrakcyjnej: ```php -$manipulator->implementInterface(SomeInterface::class); +$manipulator->implement(SomeInterface::class); // Teraz twoja klasa implementuje interfejs SomeInterface i zawiera wszystkie jego metody ``` @@ -892,6 +974,6 @@ echo $dumper->dump($var); // drukuje ['a', 'b', 123] Tabela kompatybilności .[#toc-compatibility-table] -------------------------------------------------- -PhpGenerator 4.0 i 4.1 są kompatybilne z PHP 8.0 do 8.3. +PhpGenerator 4.1 jest kompatybilny z PHP 8.0 do 8.4. {{leftbar: nette:@menu-topics}} diff --git a/php-generator/pt/@home.texy b/php-generator/pt/@home.texy index 3e797093a6..e0816507de 100644 --- a/php-generator/pt/@home.texy +++ b/php-generator/pt/@home.texy @@ -4,7 +4,7 @@ Gerador de código PHP
Você está procurando uma ferramenta para gerar código PHP para classes, funções ou arquivos completos? -- Oferece suporte a todos os recursos mais recentes do PHP (como enums, etc.) +- Oferece suporte a todos os recursos mais recentes do PHP (como ganchos de propriedade, enums, atributos, etc.) - Permite modificar facilmente as classes existentes - Saída compatível com o estilo de codificação PSR-12 / PER - Biblioteca madura, estável e amplamente utilizada @@ -634,6 +634,88 @@ class Demo ``` +Ganchos de propriedade .[#toc-property-hooks] +--------------------------------------------- + +Você também pode definir ganchos de propriedade (representados pela classe [PropertyHook |api:Nette\PhpGenerator\PropertyHook]) para operações get e set, um recurso introduzido no 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; +``` + +Isso gera: + +```php +class Demo +{ + public string $firstName { + set(string $value) => strtolower($value); + get { + return ucfirst($this->firstName); + } + } +} +``` + +As propriedades e os ganchos de propriedade podem ser abstratos ou finais: + +```php +$class->addProperty('id') + ->setType('int') + ->addHook('get') + ->setAbstract(); + +$class->addProperty('role') + ->setType('string') + ->addHook('set', 'strtolower($value)') + ->setFinal(); +``` + + +Visibilidade assimétrica .[#toc-asymmetric-visibility] +------------------------------------------------------ + +O PHP 8.4 introduz a visibilidade assimétrica para propriedades. Você pode definir diferentes níveis de acesso para leitura e gravação. + +A visibilidade pode ser definida usando o método `setVisibility()` com dois parâmetros ou usando `setPublic()`, `setProtected()`, ou `setPrivate()` com o parâmetro `mode` que especifica se a visibilidade se aplica à obtenção ou à definição da propriedade. O modo padrão é `'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; +``` + +Isso gera: + +```php +class Demo +{ + public private(set) string $name; + + protected(set) int $id; +} +``` + + Namespace .[#toc-namespace] --------------------------- @@ -867,10 +949,10 @@ $property = $manipulator->inheritProperty('foo'); $property->setValue('new value'); ``` -O método `implementInterface()` implementa automaticamente todos os métodos da interface fornecida em sua classe: +O método `implement()` implementa automaticamente todos os métodos e propriedades da interface ou classe abstrata fornecida: ```php -$manipulator->implementInterface(SomeInterface::class); +$manipulator->implement(SomeInterface::class); // Agora sua classe implementa SomeInterface e inclui todos os seus métodos ``` @@ -892,6 +974,6 @@ echo $dumper->dump($var); // gravuras ['a', 'b', 123] Tabela de Compatibilidade .[#toc-compatibility-table] ----------------------------------------------------- -O PhpGenerator 4.0 e 4.1 são compatíveis com o PHP 8.0 a 8.3 +O PhpGenerator 4.1 é compatível com o PHP 8.0 a 8.4. {{leftbar: nette:@menu-topics}} diff --git a/php-generator/ro/@home.texy b/php-generator/ro/@home.texy index edc02152f3..a5f9a64564 100644 --- a/php-generator/ro/@home.texy +++ b/php-generator/ro/@home.texy @@ -4,7 +4,7 @@ Generator de coduri PHP
Sunteți în căutarea unui instrument pentru a genera cod PHP pentru clase, funcții sau fișiere complete? -- Suportă toate cele mai recente caracteristici PHP (cum ar fi enums etc.) +- Suportă toate cele mai recente caracteristici PHP (cum ar fi cârligele de proprietate, enumurile, atributele etc.) - Vă permite să modificați cu ușurință clasele existente - Ieșire conformă cu stilul de codare PSR-12 / PER - Bibliotecă matură, stabilă și utilizată pe scară largă @@ -634,6 +634,88 @@ class Demo ``` +Cârlige de proprietate .[#toc-property-hooks] +--------------------------------------------- + +De asemenea, puteți defini cârlige de proprietate (reprezentate de clasa [PropertyHook |api:Nette\PhpGenerator\PropertyHook]) pentru operațiile get și set, o caracteristică introdusă în 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; +``` + +Aceasta generează: + +```php +class Demo +{ + public string $firstName { + set(string $value) => strtolower($value); + get { + return ucfirst($this->firstName); + } + } +} +``` + +Proprietățile și cârligele de proprietate pot fi abstracte sau finale: + +```php +$class->addProperty('id') + ->setType('int') + ->addHook('get') + ->setAbstract(); + +$class->addProperty('role') + ->setType('string') + ->addHook('set', 'strtolower($value)') + ->setFinal(); +``` + + +Vizibilitate asimetrică .[#toc-asymmetric-visibility] +----------------------------------------------------- + +PHP 8.4 introduce vizibilitatea asimetrică pentru proprietăți. Puteți seta niveluri de acces diferite pentru citire și scriere. + +Vizibilitatea poate fi setată folosind fie metoda `setVisibility()` cu doi parametri, fie folosind `setPublic()`, `setProtected()`, sau `setPrivate()` cu parametrul `mode` care specifică dacă vizibilitatea se aplică la obținerea sau setarea proprietății. Modul implicit este `'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; +``` + +Acest lucru generează: + +```php +class Demo +{ + public private(set) string $name; + + protected(set) int $id; +} +``` + + Spațiul de nume .[#toc-namespace] --------------------------------- @@ -867,10 +949,10 @@ $property = $manipulator->inheritProperty('foo'); $property->setValue('new value'); ``` -Metoda `implementInterface()` implementează automat toate metodele interfeței date în clasa dumneavoastră: +Metoda `implement()` implementează automat toate metodele și proprietățile din interfața sau clasa abstractă dată: ```php -$manipulator->implementInterface(SomeInterface::class); +$manipulator->implement(SomeInterface::class); // Acum clasa dvs. implementează SomeInterface și include toate metodele acesteia ``` @@ -892,6 +974,6 @@ echo $dumper->dump($var); // prints ['a', 'b', 123] Tabel de compatibilitate .[#toc-compatibility-table] ---------------------------------------------------- -PhpGenerator 4.0 și 4.1 sunt compatibile cu PHP 8.0 până la 8.3 +PhpGenerator 4.1 este compatibil cu PHP 8.0 până la 8.4. {{leftbar: nette:@menu-topics}} diff --git a/php-generator/ru/@home.texy b/php-generator/ru/@home.texy index dc328ce15a..19633d8644 100644 --- a/php-generator/ru/@home.texy +++ b/php-generator/ru/@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); // печатает ['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}} diff --git a/php-generator/sl/@home.texy b/php-generator/sl/@home.texy index 015e74f7bd..18c6871ec5 100644 --- a/php-generator/sl/@home.texy +++ b/php-generator/sl/@home.texy @@ -4,7 +4,7 @@ Generator kode PHP
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}}