Releases: nette/php-generator
Release list
Released version 4.2.2
This release focuses on making namespaces and classes work together more naturally. Classes now know which namespace they belong to, constructors accept fully qualified names, and a new unified add() method on PhpFile ties it all together. Under the hood, the Factory got a thorough refactoring and the codebase passed its first mandatory static analysis check.
-
PhpNamespace::add() now automatically assigns itself as the namespace of any ClassLike passed to it. If your code relied on
getNamespace()returningnullafter adding a class to a namespace, you'll need to update that assumption. -
PhpFile::add() – a single entry point for adding classes, interfaces, traits, enums, functions, and namespaces to a file. It handles namespace creation and bracket syntax automatically, so you can build a complete file with just
add()calls. -
ClassLike::getFullName() – returns the fully qualified name when the class belongs to a namespace (e.g.,
App\Model\User), the short name otherwise, ornullfor anonymous classes. -
ClassLike constructors now accept FQN – pass
'App\Model\User'and the namespace is extracted automatically. No need to create the namespace separately for simple cases. -
PhpNamespace::add() accepts GlobalFunction – the unified
add()method now handles functions alongside class-like types, making the namespace API more consistent. -
The
$namespaceparameter in ClassLike constructors is deprecated. UsesetNamespace()instead. The old signature still works for now, but will be removed in a future version.
Released version 4.2.0
- requires PHP 8.1
- Visibility, PropertyHookType & PropertyAccessMode are enums (BC break)
- removed deprecated stuff
- addTrait() second argument is deprecated (BC break)
Released version 4.1.9
- support for PHP 8.5
- final promoted property in PHP 8.5
- optimized global function calls
Released version 4.1.8
Factory::fromClassReflection()extracts property hook bodies (#172)Factory::fromClassReflection()rejects $withBodies for interfaces- improved tests
- cs
Released version 4.1.7
- added support for PHP 8.4 features
- properties hooks
- asymmetric visibility
- property can be abstract / final
- interfaces can have properties
- added Visibility
ClassManipulator::implement()can implement abstract classesClassManipulator::implementInterface()renamed toimplement()- PsrPrinter is not final
- Constant: type can be nullable
- Factory: fixed visibility of promoted property
Released version 4.0.10 (EOL)
Extractor::extractAll()fixed file comment parsing- Factory: $withBodies cannot be used for internal classes/functions
- Printer: fixed falsy Attribute aren't printed (#142)
- added Visibility
Released version 4.1.6
- added ClassManipulator
- Parameter & Property:
isNullable()returns true when default value is null (possible BC break) - added TraitsAware::hasTrait method (#163)
- support for PHP 8.4
Released version 4.1.5
- added
PhpNamespace::getClass()&getFunction() - added
CommentAware::removeComment() - added
PhpFile::removeNamespace() - Factory, Extractor: sets flag readonly for promoted properties #158 (reverts "Factory: properties in readonly classes are not readonly")
- ClassType: cloning includes attributes and parameters
- GlobalFunction, Method:
from()accepts first-class callables
Released version 4.1.4
- PsrPrinter: opening bracket on the correct line #155
- Make
ClassLike::fromreturn type assert the subclass type (BC break) (#154) Dumper::dumpArray(),dumpArguments()optimization- Dumper: simplified list with negative keys
- added parameter $overwrite to
addMember(),addMethod(),addProperty(),addConstant(),addCase()#152 - Factory: parameters 'int $foo = null' are parsed as '?int'
Released version 4.1.3
- Extractor: supports PHP-Parser 5.0 (#150)
- Extractor: fix escaping quotes when converting to double quoted string #151
- Extractor: NOWDOC/HEREDOC are not converted to single line strings
- Dumper: added $customObjects
- Dumper: refactoring, added
dumpCustomObject() - Printer: option $omitEmptyNamespaces is applied by
printFile()[Close #147]