File tree Expand file tree Collapse file tree 2 files changed +25
-0
lines changed Expand file tree Collapse file tree 2 files changed +25
-0
lines changed Original file line number Diff line number Diff line change @@ -87,6 +87,15 @@ public function getBracketedSyntax(): bool
87
87
*/
88
88
public function addUse (string $ name , string $ alias = null , string &$ aliasOut = null ): self
89
89
{
90
+ if (
91
+ !Helpers::isNamespaceIdentifier ($ name , true )
92
+ || (Helpers::isIdentifier ($ name ) && isset (Helpers::KEYWORDS [strtolower ($ name )]))
93
+ ) {
94
+ throw new Nette \InvalidArgumentException ("Value ' $ name' is not valid class name. " );
95
+ } elseif ($ alias && (!Helpers::isIdentifier ($ alias ) || isset (Helpers::KEYWORDS [strtolower ($ alias )]))) {
96
+ throw new Nette \InvalidArgumentException ("Value ' $ alias' is not valid alias. " );
97
+ }
98
+
90
99
$ name = ltrim ($ name , '\\' );
91
100
if ($ alias === null && $ this ->name === Helpers::extractNamespace ($ name )) {
92
101
$ alias = Helpers::extractShortName ($ name );
Original file line number Diff line number Diff line change @@ -36,6 +36,22 @@ Assert::exception(function () {
36
36
new Nette \PhpGenerator \PhpNamespace ('\abc ' );
37
37
}, Nette \InvalidArgumentException::class);
38
38
39
+ Assert::exception (function () {
40
+ (new Nette \PhpGenerator \PhpNamespace ('Abc ' ))->addUse ('' );
41
+ }, Nette \InvalidArgumentException::class);
42
+
43
+ Assert::exception (function () {
44
+ (new Nette \PhpGenerator \PhpNamespace ('Abc ' ))->addUse ('Foo ' , 'a b ' );
45
+ }, Nette \InvalidArgumentException::class);
46
+
47
+ Assert::exception (function () {
48
+ (new Nette \PhpGenerator \PhpNamespace ('Abc ' ))->addUse ('true ' );
49
+ }, Nette \InvalidArgumentException::class);
50
+
51
+ Assert::exception (function () {
52
+ (new Nette \PhpGenerator \PhpNamespace ('Abc ' ))->addUse ('aaa ' , 'true ' );
53
+ }, Nette \InvalidArgumentException::class);
54
+
39
55
40
56
Assert::noError (function () {
41
57
new Nette \PhpGenerator \ClassType (null ); // anonymous class
You can’t perform that action at this time.
0 commit comments