From 83986dd7a396176ad1b21e2622f4cca55c321064 Mon Sep 17 00:00:00 2001 From: Jay McPartland Date: Fri, 17 Oct 2025 16:22:15 +0100 Subject: [PATCH] Fix stringable sniff to account for namespaces --- BigBite/Sniffs/Classes/StringableSniff.php | 11 ++++++++--- BigBite/Tests/Classes/StringableUnitTest.1.inc | 2 +- BigBite/Tests/Classes/StringableUnitTest.1.inc.fixed | 8 ++++---- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/BigBite/Sniffs/Classes/StringableSniff.php b/BigBite/Sniffs/Classes/StringableSniff.php index 8888732..7559369 100644 --- a/BigBite/Sniffs/Classes/StringableSniff.php +++ b/BigBite/Sniffs/Classes/StringableSniff.php @@ -67,7 +67,12 @@ public function process( File $phpcsFile, $stackPtr ) { $interfaces = ObjectDeclarations::findImplementedInterfaceNames( $phpcsFile, $classDecl ); // we're good - class containing __toString implements the interface. - if ( is_array( $interfaces ) && in_array( 'Stringable', $interfaces, true ) ) { + if ( + is_array( $interfaces ) && ( + in_array( '\\Stringable', $interfaces, true ) || + in_array( 'Stringable', $interfaces, true ) + ) + ) { return; } @@ -88,7 +93,7 @@ public function process( File $phpcsFile, $stackPtr ) { } $phpcsFile->fixer->beginChangeset(); - $phpcsFile->fixer->addContent( $prevToken, ' implements Stringable' ); + $phpcsFile->fixer->addContent( $prevToken, ' implements \\Stringable' ); $phpcsFile->fixer->endChangeset(); return; @@ -101,7 +106,7 @@ public function process( File $phpcsFile, $stackPtr ) { } $phpcsFile->fixer->beginChangeset(); - $phpcsFile->fixer->addContentBefore( $endOfLine, ' implements Stringable' ); + $phpcsFile->fixer->addContentBefore( $endOfLine, ' implements \\Stringable' ); $phpcsFile->fixer->endChangeset(); } } diff --git a/BigBite/Tests/Classes/StringableUnitTest.1.inc b/BigBite/Tests/Classes/StringableUnitTest.1.inc index b15eae2..a9bd615 100644 --- a/BigBite/Tests/Classes/StringableUnitTest.1.inc +++ b/BigBite/Tests/Classes/StringableUnitTest.1.inc @@ -3,7 +3,7 @@ class DoesNotImplementToStringMagicMethod { } -class CorrectlyImplementsStringable implements Stringable { +class CorrectlyImplementsStringable implements \Stringable { public function __toString(): string { return __CLASS__; } diff --git a/BigBite/Tests/Classes/StringableUnitTest.1.inc.fixed b/BigBite/Tests/Classes/StringableUnitTest.1.inc.fixed index af41b90..1ef7b4e 100644 --- a/BigBite/Tests/Classes/StringableUnitTest.1.inc.fixed +++ b/BigBite/Tests/Classes/StringableUnitTest.1.inc.fixed @@ -3,25 +3,25 @@ class DoesNotImplementToStringMagicMethod { } -class CorrectlyImplementsStringable implements Stringable { +class CorrectlyImplementsStringable implements \Stringable { public function __toString(): string { return __CLASS__; } } -class IncorrectWithWhitespace implements Stringable { +class IncorrectWithWhitespace implements \Stringable { public function __toString(): string { return __CLASS__; } } -class IncorrectWithNoWhitespace implements Stringable{ +class IncorrectWithNoWhitespace implements \Stringable{ public function __toString(): string { return __CLASS__; } } -class IncorrectWithNewline implements Stringable +class IncorrectWithNewline implements \Stringable { public function __toString(): string { return __CLASS__;