protected function validatePath(string $path): void
    {
        // The number of opening required non-capture groups <
        $requiredGroupsOpen = substr_count($path, '<');
        // The number of closing required non-capture groups >
        $requiredGroupsClose = substr_count($path, '>');
        // The number of opening optional non-capture groups [
        $optionalGroupsOpen = substr_count($path, '[');
        // The number of closing optional non-capture groups ]
        $optionalGroupsClose = substr_count($path, ']');

        // If the count of required opening and closing tags doesn't match
        if ($requiredGroupsOpen !== $requiredGroupsClose) {
            // Throw an error letting the develop know they made a bad path
            throw new InvalidArgumentException(
                'Mismatch of required groups for path: ' . $path
            );
        }

        // If the count of optional opening and closing tags doesn't match
        if ($optionalGroupsOpen !== $optionalGroupsClose) {
            // Throw an error letting the develop know they made a bad path
            throw new InvalidArgumentException(
                'Mismatch of optional groups for path: ' . $path
            );
        }
    }
protected function validatePath(string $path): void
    {
        // The number of opening required non-capture groups <
        $requiredGroupsOpen = substr_count($path, '<');
        // The number of closing required non-capture groups >
        $requiredGroupsClose = substr_count($path, '>');
        // The number of opening optional non-capture groups [
        $optionalGroupsOpen = substr_count($path, '[');
        // The number of closing optional non-capture groups ]
        $optionalGroupsClose = substr_count($path, ']');

        // If the count of required opening and closing tags doesn't match
        if ($requiredGroupsOpen !== $requiredGroupsClose) {
            // Throw an error letting the develop know they made a bad path
            throw new InvalidArgumentException(
                'Mismatch of required groups for path: ' . $path
            );
        }

        // If the count of optional opening and closing tags doesn't match
        if ($optionalGroupsOpen !== $optionalGroupsClose) {
            // Throw an error letting the develop know they made a bad path
            throw new InvalidArgumentException(
                'Mismatch of optional groups for path: ' . $path
            );
        }
    }
protected function validatePath ( string $ path ) : void { // The number of opening required non-capture groups < $ requiredGroupsOpen = substr_count ( $ path , '<' ) ; // The number of closing required non-capture groups > $ requiredGroupsClose = substr_count ( $ path , '>' ) ; // The number of opening optional non-capture groups [ $ optionalGroupsOpen = substr_count ( $ path , '[' ) ; // The number of closing optional non-capture groups ] $ optionalGroupsClose = substr_count ( $ path , ']' ) ; // If the count of required opening and closing tags doesn't match if ( $ requiredGroupsOpen !== $ requiredGroupsClose ) { // Throw an error letting the develop know they made a bad path throw new InvalidArgumentException ( 'Mismatch of required groups for path: ' . $ path ) ; } // If the count of optional opening and closing tags doesn't match if ( $ optionalGroupsOpen !== $ optionalGroupsClose ) { // Throw an error letting the develop know they made a bad path throw new InvalidArgumentException ( 'Mismatch of optional groups for path: ' . $ path ) ; } }
Validate a path's opening and closing tags.

@param string $path The path

@throws \InvalidArgumentException

@return void
Validate a path s opening and closing tags .