From 58c9bb054cbe46a831cfc85103c659534c103bae Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Tue, 7 Oct 2025 04:15:24 +0700 Subject: [PATCH 1/2] Add note for substr() can return false on php 7.x on ClassLikeNameClassNameImportSkipVoter --- .../ClassLikeNameClassNameImportSkipVoter.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/rules/CodingStyle/ClassNameImport/ClassNameImportSkipVoter/ClassLikeNameClassNameImportSkipVoter.php b/rules/CodingStyle/ClassNameImport/ClassNameImportSkipVoter/ClassLikeNameClassNameImportSkipVoter.php index be8a44e9ce3..9f93a520fe1 100644 --- a/rules/CodingStyle/ClassNameImport/ClassNameImportSkipVoter/ClassLikeNameClassNameImportSkipVoter.php +++ b/rules/CodingStyle/ClassNameImport/ClassNameImportSkipVoter/ClassLikeNameClassNameImportSkipVoter.php @@ -46,8 +46,12 @@ public function shouldSkip(File $file, FullyQualifiedObjectType $fullyQualifiedO $namespace = strtolower((string) $namespace); $shortNameLowered = $fullyQualifiedObjectType->getShortNameLowered(); - $subClassName = substr($fullyQualifiedObjectType->getClassName(), 0, -strlen($fullyQualifiedObjectType->getShortName()) - 1); - $fullyQualifiedObjectTypeNamespace = strtolower((string) $subClassName); + /** + * on php 7.x, substr() result can return false, so force (string) is needed + * see https://github.com/rectorphp/rector-src/pull/7436 + */ + $subClassName = (string) substr($fullyQualifiedObjectType->getClassName(), 0, -strlen($fullyQualifiedObjectType->getShortName()) - 1); + $fullyQualifiedObjectTypeNamespace = strtolower($subClassName); foreach ($classLikeNames as $classLikeName) { if (strtolower($classLikeName) !== $shortNameLowered) { From 34fb09862979b1ea32d9367880e9435e190075ba Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Tue, 7 Oct 2025 04:17:45 +0700 Subject: [PATCH 2/2] Add note for substr() can return false on php 7.x on ClassLikeNameClassNameImportSkipVoter --- .../ClassLikeNameClassNameImportSkipVoter.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rules/CodingStyle/ClassNameImport/ClassNameImportSkipVoter/ClassLikeNameClassNameImportSkipVoter.php b/rules/CodingStyle/ClassNameImport/ClassNameImportSkipVoter/ClassLikeNameClassNameImportSkipVoter.php index 9f93a520fe1..3cd5e4dec0d 100644 --- a/rules/CodingStyle/ClassNameImport/ClassNameImportSkipVoter/ClassLikeNameClassNameImportSkipVoter.php +++ b/rules/CodingStyle/ClassNameImport/ClassNameImportSkipVoter/ClassLikeNameClassNameImportSkipVoter.php @@ -48,7 +48,7 @@ public function shouldSkip(File $file, FullyQualifiedObjectType $fullyQualifiedO $shortNameLowered = $fullyQualifiedObjectType->getShortNameLowered(); /** * on php 7.x, substr() result can return false, so force (string) is needed - * see https://github.com/rectorphp/rector-src/pull/7436 + * @see https://github.com/rectorphp/rector-src/pull/7436 */ $subClassName = (string) substr($fullyQualifiedObjectType->getClassName(), 0, -strlen($fullyQualifiedObjectType->getShortName()) - 1); $fullyQualifiedObjectTypeNamespace = strtolower($subClassName);