@@ -438,6 +438,8 @@ private function stripAndReturnParameters($reference)
438438 * @param string $inputString
439439 * @return string | null
440440 * @throws \Exception
441+ *
442+ * @SuppressWarnings(PHPMD.CyclomaticComplexity)
441443 */
442444 private function findAndReplaceReferences ($ objectHandler , $ inputString )
443445 {
@@ -460,25 +462,24 @@ private function findAndReplaceReferences($objectHandler, $inputString)
460462 continue ;
461463 }
462464
463- // specify behavior depending on field
464- switch (get_class ($ obj )) {
465- case PageObject::class:
466- $ this ->validateUrlAreaAgainstActionType ($ obj );
467- $ replacement = $ obj ->getUrl ();
468- $ parameterized = $ obj ->isParameterized ();
469- break ;
470- case SectionObject::class:
471- list (,$ objField ) = $ this ->stripAndSplitReference ($ match );
472- if ($ obj ->getElement ($ objField ) == null ) {
473- throw new TestReferenceException ("Could not resolve entity reference " . $ inputString );
474- }
475- $ parameterized = $ obj ->getElement ($ objField )->isParameterized ();
476- $ replacement = $ obj ->getElement ($ objField )->getPrioritizedSelector ();
477- $ this ->setTimeout ($ obj ->getElement ($ objField )->getTimeout ());
478- break ;
479- case EntityDataObject::class:
480- $ replacement = $ this ->resolveEntityDataObjectReference ($ obj , $ match );
481- break ;
465+ if ($ obj == null ) {
466+ // keep initial values for subsequent logic
467+ $ replacement = null ;
468+ $ parameterized = false ;
469+ } elseif (get_class ($ obj ) == PageObject::class) {
470+ $ this ->validateUrlAreaAgainstActionType ($ obj );
471+ $ replacement = $ obj ->getUrl ();
472+ $ parameterized = $ obj ->isParameterized ();
473+ } elseif (get_class ($ obj ) == SectionObject::class) {
474+ list (,$ objField ) = $ this ->stripAndSplitReference ($ match );
475+ if ($ obj ->getElement ($ objField ) == null ) {
476+ throw new TestReferenceException ("Could not resolve entity reference " . $ inputString );
477+ }
478+ $ parameterized = $ obj ->getElement ($ objField )->isParameterized ();
479+ $ replacement = $ obj ->getElement ($ objField )->getPrioritizedSelector ();
480+ $ this ->setTimeout ($ obj ->getElement ($ objField )->getTimeout ());
481+ } elseif (get_class ($ obj ) == EntityDataObject::class) {
482+ $ replacement = $ this ->resolveEntityDataObjectReference ($ obj , $ match );
482483 }
483484
484485 if ($ replacement == null ) {
0 commit comments