88use Doctrine \Persistence \Mapping \MappingException ;
99
1010use function array_keys ;
11+ use function rtrim ;
1112use function spl_object_id ;
12- use function str_starts_with ;
13+ use function strpos ;
1314
1415/**
1516 * The DriverChain allows you to add multiple other mapping drivers for
@@ -56,7 +57,7 @@ public function getDrivers(): array
5657 public function loadMetadataForClass (string $ className , ClassMetadata $ metadata ): void
5758 {
5859 foreach ($ this ->drivers as $ namespace => $ driver ) {
59- if (str_starts_with ($ className , $ namespace )) {
60+ if ($ this -> isInNamespace ($ className , $ namespace )) {
6061 $ driver ->loadMetadataForClass ($ className , $ metadata );
6162
6263 return ;
@@ -88,7 +89,7 @@ public function getAllClassNames(): array
8889 }
8990
9091 foreach ($ driverClasses [$ oid ] as $ className ) {
91- if (! str_starts_with ($ className , $ namespace )) {
92+ if (! $ this -> isInNamespace ($ className , $ namespace )) {
9293 continue ;
9394 }
9495
@@ -108,7 +109,7 @@ public function getAllClassNames(): array
108109 public function isTransient (string $ className ): bool
109110 {
110111 foreach ($ this ->drivers as $ namespace => $ driver ) {
111- if (str_starts_with ($ className , $ namespace )) {
112+ if ($ this -> isInNamespace ($ className , $ namespace )) {
112113 return $ driver ->isTransient ($ className );
113114 }
114115 }
@@ -119,4 +120,11 @@ public function isTransient(string $className): bool
119120
120121 return true ;
121122 }
123+
124+ private function isInNamespace (string $ className , string $ namespace ): bool
125+ {
126+ $ namespace = rtrim ($ namespace , '\\' ) . '\\' ;
127+
128+ return strpos ($ className , $ namespace ) === 0 ;
129+ }
122130}
0 commit comments