Releases · nette/php-generator
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]