Hauptmenü

Werkzeuge

Kategorien

Archiv

Inkonsistentes Verhalten von gettype in PHP

Erstellt in Allgemein am 19. Februar 2024 vom Daschmi

Mir ist aufgefallen, das die PHP Funktion „gettype“ bei Integer Werten „integer“ und nicht die interne PHP Bezeichnung „int“ zurückgibt.

Aufgrund der Abwärtskompatibilität wird das Verhalten wohl auch nicht geändert. https://bugs.php.net/bug.php?id=74742.

Aufgefallen ist mir das bei der Reflection einer Klasse die ich dynamisch für einen SOAP Server und REST Anfragen nutze. Dort erhalte ich bei „ReflectionParameter::getType“ als Typ „int“, wenn ich den aber mit dem gettype der JSON Anfrage vergleiche erhalte ich „integer“.

Gelöst habe ich das durch eine kleine match Function.

abstract class Helper {
  /**
   * Correct integer to int in the gettype php function
   * https://bugs.php.net/bug.php?id=74742
   * @param string $type
   * @return string
   */
  public static function mapGetTypeType(string $type): string {
    
    return match($type) {
      'integer' => 'int',
      default => $type
    };
    
  }
}