Free Software Developer

  • Twitter
  • Google Plus

kontakt@www.cqueiser.de

+49 171 1405142

  • Home
  • Über mich
  • Artikel
  • Kontakt

PHP var_dump(0123)

Posted:
11.03.2017

Tags:
c, oktal, php, var_dump

Comments: 0

Die aktuellste Version von PHP (Abkürzung für “Hypertext Preprocessor”) ist v7.1.2 [php7].

Seit dem Start im Jahr 1995 [php1] hat sich einiges Getan. Anfangs nur als Script-Sprache gedacht, hat es sich zu einer typen sicheren Programmiersprache entwickelt.

In PHPv5 ist es nicht möglich in einem Methodenparameter auf ‘int’, ‘string’ oder ‘array’ zu prüfen.

Beispiel:

public function getBar($foo) 
{
    print $foo;
}

 

Die Variable $foo kann in dem Fall jedem Typ entsprechen. Sollen nur ‘int’ oder ‘strings’ erlaubt sein, dass muss im Methoden-Rumpf mittels ‘is_int’ oder ‘is_string’ geprüft werden.

In PHPv7 ist das nun möglich. Hierzu auch ein Beispiel:

public function getBar(int $foo)
{
    print $foo;
}

 

Hier wird direkt schon bei den Übergabe geprüft, ob der Wert dem Typ eines Integers entspricht. Falls nicht, wird eine Fehlermeldung produziert.

Nun zum eigentlichen Problem vom Ergebnis von var_dump(0123)

Das Ergebnis lautet ‘int(83)’. Warum?

Die führende 0 weist dem Interpreter an von Dezimal auf Oktal umzustellen. Die Basis ist nun nicht mehr 10, sondern 8.

Ein anderes Phänomen erreicht man mit diesem Ausdruck ‘var_dump(0x123)’. Das Ergebnis lautet ‘int(291)’. Hier wird in Hexadezimal gerechnet.

Die Ursache liegt im Kern von PHP. Jede Version von PHP baut auf die Programmiersprache C auf [C].

[php1] http://de1.php.net/manual/de/history.php.php
[php7] http://php.net/
[C] https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/BitOp/hexoctal.html


  • c
  • oktal
  • php
  • var_dump

Share This Post

  • Facebook
  • Twitter
  • Google Plus
  • Pinterest

About

cqueiser

Christopher Queiser – Freiberuflicher Software-Developer. Spezialisiert in PHP / Drupal / Symfony & Wordpress. Aktuell strebt er berufsbegleitend einen Master of Science in "IT-Management" an der FOM an.

Related Posts

Leave A Comment

Click here to cancel reply.

Name*

Mail*

Website

Recent Posts

  • MySQL Date NOT NULL DEFAULT ‘0000-00-00’
  • PHP var_dump(0123)
  • PageSpeed

Archives

  • August 2017
  • March 2017
  • October 2013

Categories

  • Uncategorized
  • Home
  • Kontakt
  • Impressum

Dieffenbachstr. 33, 10967 Berlin, Deutschland

+49 171 1405142

E-mail: kontakt@www.cqueiser.de

Soziale Präsenz


  • Twitter
  • Google Plus

Copyright © 2016 cqueiser.de