Add Name::getParts(), deprecate Name::$parts

In preparation for switching this to a plain string in
PHP-Parser 5, deprecate direct access to the property and
provide an API that will work on both versions.

(cherry picked from commit c9e5a13d68486e9fd75f9be1b4639644e54e7f4f)
This commit is contained in:
Nikita Popov 2023-05-21 21:22:47 +02:00
parent d43edfbb31
commit df3a7057ab
2 changed files with 15 additions and 1 deletions

View File

@ -5,7 +5,10 @@ namespace PhpParser\Node;
use PhpParser\NodeAbstract;
class Name extends NodeAbstract {
/** @var string[] Parts of the name */
/**
* @var string[] Parts of the name
* @deprecated Use getParts() instead
*/
public $parts;
/** @var array<string, bool> */
@ -30,6 +33,15 @@ class Name extends NodeAbstract {
return ['parts'];
}
/**
* Get parts of name (split by the namespace separator).
*
* @return string[] Parts of name
*/
public function getParts(): array {
return $this->parts;
}
/**
* Gets the first part of the name, i.e. everything before the first namespace separator.
*

View File

@ -18,10 +18,12 @@ class NameTest extends \PHPUnit\Framework\TestCase {
$name = new Name('foo');
$this->assertSame('foo', $name->getFirst());
$this->assertSame('foo', $name->getLast());
$this->assertSame(['foo'], $name->getParts());
$name = new Name('foo\bar');
$this->assertSame('foo', $name->getFirst());
$this->assertSame('bar', $name->getLast());
$this->assertSame(['foo', 'bar'], $name->getParts());
}
public function testToString() {