File tree Expand file tree Collapse file tree 3 files changed +43
-7
lines changed Expand file tree Collapse file tree 3 files changed +43
-7
lines changed Original file line number Diff line number Diff line change @@ -505,6 +505,9 @@ $namespace = $file->addNamespace('Foo');
505
505
$class = $namespace->addClass('A');
506
506
$class->addMethod('hello');
507
507
508
+ // or insert an existing namespace into the file
509
+ // $file->addNamespace(new Nette\PhpGenerator\PhpNamespace('Foo'));
510
+
508
511
echo $file;
509
512
510
513
// or use PsrPrinter for output compatible with PSR-2 / PSR-12
Original file line number Diff line number Diff line change @@ -56,15 +56,23 @@ public function addTrait(string $name): ClassType
56
56
}
57
57
58
58
59
- public function addNamespace (string $ name ): PhpNamespace
59
+ /** @param string|PhpNamespace $namespace */
60
+ public function addNamespace ($ namespace ): PhpNamespace
60
61
{
61
- if (!isset ($ this ->namespaces [$ name ])) {
62
- $ this ->namespaces [$ name ] = new PhpNamespace ($ name );
63
- foreach ($ this ->namespaces as $ namespace ) {
64
- $ namespace ->setBracketedSyntax (count ($ this ->namespaces ) > 1 && isset ($ this ->namespaces ['' ]));
65
- }
62
+ if ($ namespace instanceof PhpNamespace) {
63
+ $ res = $ this ->namespaces [$ namespace ->getName ()] = $ namespace ;
64
+
65
+ } elseif (is_string ($ namespace )) {
66
+ $ res = $ this ->namespaces [$ namespace ] = $ this ->namespaces [$ namespace ] ?? new PhpNamespace ($ namespace );
67
+
68
+ } else {
69
+ throw new Nette \InvalidArgumentException ('Argument must be string|PhpNamespace. ' );
70
+ }
71
+
72
+ foreach ($ this ->namespaces as $ namespace ) {
73
+ $ namespace ->setBracketedSyntax (count ($ this ->namespaces ) > 1 && isset ($ this ->namespaces ['' ]));
66
74
}
67
- return $ this -> namespaces [ $ name ] ;
75
+ return $ res ;
68
76
}
69
77
70
78
Original file line number Diff line number Diff line change
1
+ <?php
2
+
3
+ declare (strict_types=1 );
4
+
5
+ use Nette \PhpGenerator \PhpFile ;
6
+ use Nette \PhpGenerator \PhpNamespace ;
7
+
8
+ require __DIR__ . '/../bootstrap.php ' ;
9
+
10
+ $ namespace = new PhpNamespace ('Foo ' );
11
+ $ namespace ->addClass ('Bar ' );
12
+
13
+ $ phpFile = new PhpFile ;
14
+ $ phpFile ->addNamespace ('Foo ' );
15
+ $ phpFile ->addNamespace ($ namespace ); // overwrite
16
+
17
+
18
+ same ('<?php
19
+
20
+ namespace Foo;
21
+
22
+ class Bar
23
+ {
24
+ }
25
+ ' , (string ) $ phpFile );
You can’t perform that action at this time.
0 commit comments