From f286a7a91f5f349fc86c0eb2da31c63a1ff4c56b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bar=C3=A1=C5=A1ek?= Date: Wed, 26 Feb 2020 15:20:12 +0100 Subject: [PATCH 1/3] Resolver: In case of factory: interface throw user-friendly exception message. --- src/DI/Resolver.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/DI/Resolver.php b/src/DI/Resolver.php index da4d810d4..564b3b073 100644 --- a/src/DI/Resolver.php +++ b/src/DI/Resolver.php @@ -134,7 +134,10 @@ public function resolveEntityType(Statement $statement): ?string } elseif (is_string($entity)) { // class if (!class_exists($entity)) { - throw new ServiceCreationException("Class $entity not found."); + throw new ServiceCreationException( + 'Class \'' . $entity . '\' not found.' + . (interface_exists($entity) ? ' Interface \'' . $entity . '\' can not be used in \'factory\' section as service.' : '') + ); } return $entity; } From 731a2865b7a348e175e63474159356ffd04deb89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bar=C3=A1=C5=A1ek?= Date: Wed, 26 Feb 2020 15:31:18 +0100 Subject: [PATCH 2/3] Resolver: Codestyle --- src/DI/Resolver.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/DI/Resolver.php b/src/DI/Resolver.php index 564b3b073..0c90b0295 100644 --- a/src/DI/Resolver.php +++ b/src/DI/Resolver.php @@ -135,8 +135,8 @@ public function resolveEntityType(Statement $statement): ?string } elseif (is_string($entity)) { // class if (!class_exists($entity)) { throw new ServiceCreationException( - 'Class \'' . $entity . '\' not found.' - . (interface_exists($entity) ? ' Interface \'' . $entity . '\' can not be used in \'factory\' section as service.' : '') + 'Class ' . $entity . ' not found.' + . (interface_exists($entity) ? ' Interface ' . $entity . ' can not be used in factory section as service.' : '') ); } return $entity; From 402f846068d9ca564ddb5fa31991cc2970e193ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bar=C3=A1=C5=A1ek?= Date: Fri, 28 Feb 2020 15:34:42 +0100 Subject: [PATCH 3/3] Resolver: Better message in case of interface as factory. --- src/DI/Resolver.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/DI/Resolver.php b/src/DI/Resolver.php index 0c90b0295..bf340583e 100644 --- a/src/DI/Resolver.php +++ b/src/DI/Resolver.php @@ -134,10 +134,10 @@ public function resolveEntityType(Statement $statement): ?string } elseif (is_string($entity)) { // class if (!class_exists($entity)) { - throw new ServiceCreationException( - 'Class ' . $entity . ' not found.' - . (interface_exists($entity) ? ' Interface ' . $entity . ' can not be used in factory section as service.' : '') - ); + if (interface_exists($entity)) { + throw new ServiceCreationException('Interface \'' . $entity . '\' can not be used as \'factory\', did you mean \'implement\'?'); + } + throw new ServiceCreationException("Class $entity not found."); } return $entity; }