Search moodle.org's
Developer Documentation

See Release Notes
Long Term Support Release

  • Bug fixes for general core bugs in 4.1.x will end 13 November 2023 (12 months).
  • Bug fixes for security issues in 4.1.x will end 10 November 2025 (36 months).
  • PHP version: minimum PHP 7.4.0 Note: minimum PHP version has increased since Moodle 4.0. PHP 8.0.x is supported too.

Differences Between: [Versions 310 and 401] [Versions 311 and 401] [Versions 39 and 401] [Versions 400 and 401]

   1  <?php
   2  /*
   3   * Copyright 2015-present MongoDB, Inc.
   4   *
   5   * Licensed under the Apache License, Version 2.0 (the "License");
   6   * you may not use this file except in compliance with the License.
   7   * You may obtain a copy of the License at
   8   *
   9   *   https://www.apache.org/licenses/LICENSE-2.0
  10   *
  11   * Unless required by applicable law or agreed to in writing, software
  12   * distributed under the License is distributed on an "AS IS" BASIS,
  13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14   * See the License for the specific language governing permissions and
  15   * limitations under the License.
  16   */
  17  
  18  namespace MongoDB\Exception;
  19  
  20  use MongoDB\Driver\Exception\InvalidArgumentException as DriverInvalidArgumentException;
  21  
  22  use function array_pop;
  23  use function count;
  24  use function gettype;
  25  use function implode;
  26  use function is_array;
  27  use function sprintf;
  28  
  29  class InvalidArgumentException extends DriverInvalidArgumentException implements Exception
  30  {
  31      /**
  32       * Thrown when an argument or option has an invalid type.
  33       *
  34       * @param string          $name         Name of the argument or option
  35       * @param mixed           $value        Actual value (used to derive the type)
  36       * @param string|string[] $expectedType Expected type
  37       * @return self
  38       */
  39      public static function invalidType(string $name, $value, $expectedType)
  40      {
  41          if (is_array($expectedType)) {
  42              switch (count($expectedType)) {
  43                  case 1:
  44                      $typeString = array_pop($expectedType);
  45                      break;
  46  
  47                  case 2:
  48                      $typeString = implode('" or "', $expectedType);
  49                      break;
  50  
  51                  default:
  52                      $lastType = array_pop($expectedType);
  53                      $typeString = sprintf('%s", or "%s', implode('", "', $expectedType), $lastType);
  54                      break;
  55              }
  56  
  57              $expectedType = $typeString;
  58          }
  59  
  60          return new static(sprintf('Expected %s to have type "%s" but found "%s"', $name, $expectedType, gettype($value)));
  61      }
  62  }