dedlfix: Instanzstrukturen mit TraitsHelper oder HelperService Meinung

Beitrag lesen

Tach!

Ein Miniprogramm zur Demonstration:

<?php
var_dump($a);
$a[] = 7;
echo "---\n";
var_dump($a);

Ausgaben:

<b>Notice</b>:  Undefined variable: a in <b>[...][...]</b> on line <b>3</b>
NULL
---
array(1) {
  [0]=>
  int(7)
}

Die Notice ignorieren wir mal, das ist bei einem private nicht so, aber der Wert darin ist interessant: NULL.

Du kannst das so nicht nachstellen. Wenn du in einer Klasse eine Variable deklarierst, wird sie beim Instantiieren eines Objekts angelegt. Sie hat zwar den Wert NULL als Default-Wert bekommen, weil nichts anderes festgelegt war.

Eine einfache Variable allerdings ist nicht angelegt. Das NULL bei ihr ist das Ergebnis des Ausdrucks, mit dem du auf sie zuzugreifen versuchst. Sie existiert nicht, also gibt PHP den Wert NULL zurück.

PHP erlaubt Dir, den [] (Array Append) Operator auf NULL anzuwenden und wandelt den Inhalt von $a stillschweigend in ein Array um.

Das ist in beiden Fällen so. Ob die Variable den Inhalt NULL hat, oder PHP ein NULL beim misslungenen Lesevorgang liefert, bleibt sich gleich.

Das ist typisch PHP, gemacht für Leute, die sich ihre Webseiten aus diversen Vorlagen zusammenkopieren und keine Ahnung vom Programmieren haben (was eine Breitseite gegen PHP ist, NICHT gegen Dich!). Es ist vor allem extrem unsauber.

Ja, aber das hat hier keine weiteren Auswirkungen, weil sich hier kein Schreibvorgang davorschmuggeln kann. Die Instanzvariable existiert ja nicht, bevor das Objekt instantiiert wird. Globale Variablen hingegen könnten an anderen Stellen des Programms bereits beschrieben worden sein.

dedlfix.

0 66

Instanzstrukturen mit TraitsHelper oder HelperService Meinung

MB
  • meinung
  • php
  • programmiertechnik
  1. 1
    pl
    1. 0
      MB
      1. 0
        pl
        1. 0
          MB
  2. 0
    MB
    1. 0
      pl
      1. 0
        MB
        1. -2
          pl
          1. 0
            MB
            1. 0
              pl
        2. -1
          pl
          1. 0
            MB
            1. 0
              pl
          2. 0
            dedlfix
            1. 0
              MB
              1. 1
                dedlfix
                1. 0
                  MB
              2. -1
                pl
  3. 2
    Rolf B
    1. 0
      MB
      1. 0
        Rolf B
        1. 0
          pl
          1. 0
            Rolf B
            1. 0
              pl
          2. -1
            pl
            1. 0
              dedlfix
              1. 0
                pl
  4. -1
    pl
    1. 0
      MB
      1. 0
        pl
        1. 0
          MB
          1. 0
            Rolf B
            1. 1
              pl
            2. 1
              dedlfix
              1. 1
                Rolf B
                1. 0
                  dedlfix
              2. 1
                pl
                1. 0
                  dedlfix
                  1. 0
                    Rolf B
                    1. 0
                      dedlfix
            3. 0
              MB
  5. 0
    pl
    1. 0
      MB
      1. 0
        pl
        1. 0
          Rolf B
          1. 0
            pl
      2. 0
        MB
        1. 0
          pl
          1. 0
            MB
  6. 0
    MB
    1. 3
      dedlfix
      1. 0
        MB
        1. 0
          Matthias Apsel
          1. 0
            MB
            1. 0
              Matthias Apsel
              1. 0
                Rolf B
                1. 0
                  Matthias Apsel
                  1. 0
                    Rolf B
                    1. 0
                      Matthias Apsel
            2. 1
              dedlfix
              1. 0
                MB
    2. -1
      pl
    3. 1
      Rolf B
      1. 0
        MB
        1. 0
          MB