Skip to content

Commit 35d4f92

Browse files
committed
added Helpers::splitClassName()
1 parent 5f81068 commit 35d4f92

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

src/Utils/Helpers.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,4 +106,16 @@ public static function compare(mixed $left, string $operator, mixed $right): boo
106106
default => throw new Nette\InvalidArgumentException("Unknown operator '$operator'"),
107107
};
108108
}
109+
110+
111+
/**
112+
* Splits a class name into namespace and short class name.
113+
* @return array{string, string}
114+
*/
115+
public static function splitClassName(string $name): array
116+
{
117+
return ($pos = strrpos($name, '\\')) === false
118+
? ['', $name]
119+
: [substr($name, 0, $pos), substr($name, $pos + 1)];
120+
}
109121
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
use Nette\Utils\Helpers;
6+
use Tester\Assert;
7+
8+
require __DIR__ . '/../bootstrap.php';
9+
10+
11+
Assert::same(['Nette\Utils', 'Helpers'], Helpers::splitClassName('Nette\Utils\Helpers'));
12+
Assert::same(['', 'Class'], Helpers::splitClassName('Class'));
13+
Assert::same(['', 'Class'], Helpers::splitClassName('\Class'));
14+
Assert::same(['\A', 'B'], Helpers::splitClassName('\A\B'));

0 commit comments

Comments
 (0)