Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Variablendeklaration in PHP

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Gast-Avatar
    Ein Gast erstellte das Thema [Erledigt] Variablendeklaration in PHP.

    [Erledigt] Variablendeklaration in PHP

    Hallo

    Obwohl ich schon einige Jahre als Entwickler tätig bin, gehöre ich erst recht kurz zu den PHP-Entwicklern. Leider tappe ich hier und da 'gerne' in die Falle der falsch geschriebenen Variablennamen.

    Daher meine Frage: Gibt es eine Option, die eine Variablendeklaration erforderlich macht? Dies bin ich von anderen Entwicklungssystemen gewöhnt und befürworte das durchaus.

    Gruß, Karl

  • HStev
    antwortet
    aber wie gesagt an Links die das Thema speziel in Bezug auf PHP behandeln bin ich sehr interesiert

    [edit] ok ~ = Nicht .... bin bisher immer davon ausgeangen das ! für Nicht steht aber das negiert ja nur.

    Einen Kommentar schreiben:


  • Zergling-new
    antwortet
    Trotzdem: Technische Info stinkt *duck&wech*

    Einen Kommentar schreiben:


  • HStev
    antwortet
    Wieder was neues dachte zuvor das wäre das gleiche...

    Einen Kommentar schreiben:


  • Zergling-new
    antwortet
    NAND: NICHT(a UND b)
    Vorhin ging es aber um: a UND (NICHT b)

    Einen Kommentar schreiben:


  • HStev
    antwortet
    hmm ok ich muss mir die Schreibweise dazu nochmal genau anschauen ... den Background dazu hab ich ja verstanden

    Hast dazu evl. n guten Link? Weil das PHP-Manual ist im dem Punkt recht spärlich gehalten.

    Aber merkwürdig das NAND - Ergebnis aus der Wiki sieht aber anders aus http://de.wikipedia.org/wiki/NAND-Gatter

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    l��t sich ja ganz liecht testen
    PHP-Code:
    <?php
    echo 0;
    echo 
    1;
    echo 
    0;
    echo 
    1;
    echo 
    "\n";
    echo 
    & ~0;
    echo 
    & ~1;
    echo 
    & ~0;
    echo 
    & ~1;
    ?>
    Code:
    0110
    0010
    Sieht nicht so aus, dass xor ein und-nicht ist.

    Einen Kommentar schreiben:


  • HStev
    antwortet
    &~ ist ein XOR oder?
    das wird leider nirgens gelisted das war mir zuvor auch noch nicht so klar

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Und dabei konnte ich noch mit einem Kunden telefonieren.
    Diese leise Tastatur macht sich einfach bezahlt

    Einen Kommentar schreiben:


  • HStev
    antwortet
    Bin beeindruckt

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Na schön. Und da das hier "PHP - Fortgeschrittene" ist, geht es noch etwas weiter.
    Nehmen wir die in der php.ini aufgeführten Konstanten und lassen sie untereinander dezimal und binär ausgeben

    Code:
    <?php
    $flags = array('E_ERROR','E_WARNING','E_PARSE','E_NOTICE','E_CORE_ERROR','E_CORE_WARNING',
    	'E_COMPILE_ERROR','E_COMPILE_WARNING','E_USER_ERROR','E_USER_WARNING','E_USER_NOTICE','E_ALL','E_STRICT');
    
    foreach($flags as $f) {
    	printf("%17s : %4d : %012s\n", $f, constant($f), decbin(constant($f)));
    }
    ?>
    (php Tag will mal wieder nicht, deshalb code)

    Code:
              E_ERROR :    1 : 000000000001
            E_WARNING :    2 : 000000000010
              E_PARSE :    4 : 000000000100
             E_NOTICE :    8 : 000000001000
         E_CORE_ERROR :   16 : 000000010000
       E_CORE_WARNING :   32 : 000000100000
      E_COMPILE_ERROR :   64 : 000001000000
    E_COMPILE_WARNING :  128 : 000010000000
         E_USER_ERROR :  256 : 000100000000
       E_USER_WARNING :  512 : 001000000000
        E_USER_NOTICE : 1024 : 010000000000
                E_ALL : 2047 : 011111111111
             E_STRICT : 2048 : 100000000000
    Die Werte, die in der Liste über E_ALL stehen, haben jeweils nur eine einzige 1 in der Binärdarstellung. Es sind einfache flags. Wenn man irgendeinen Wert hat, kann man nachsehen, ob in dessen Binärdarstellung an einer bestimmten Position auch eine 1 steht.
    Nehmen wir den Wert 75 : 000001001011
    Hat eine 1 an den Positionen von E_ERROR, E_WARNING, E_NOTICE und E_COMPILE_ERROR. Diese Flags sind gesetzt, diese Meldungen würden also bei error_reporting=75 bearbeitet werden. Die restlichen flags sind nicht gesetzt.
    Diese Verknüpfung von Bitwerten leistet der OR-Operator, dargestellt durch |
    E_ERROR|E_WARNING|E_NOTICE|E_COMPILE_ERROR=bin(100 1011)=75
    E_ALL ist der OR-Verknüpfte Wert aller einzelnen Flags - eben bis auf E_STRICT, das ein flag "oberhalb" von E_ALL setzt.
    => E_ALL|E_STRICT -> alle bisher in php für Meldungen definitierten Flags setzen.

    ~ dreht die Bits um.
    echo decbin(~E_CORE_ERROR); => 11111111111111111111111111101111
    An der Stelle, an der E_CORE_ERROR eine 1 hatte, steht nun eine 0, die restlichen Positionen sind 1.
    (Wie man hier sehen kann, werden Konstanten bei meinem php als 32-bit Werte definiert. Vollständig sieht E_CORE_ERROR also so aus:
    00000000000000000000000000010000
    aber die führenden Nullen können hier weggelassen werden)

    & stellt eine binäre UND-Verknüpfung dar. Nur an den Positionen, an denen beide Operanden eine 1 zu stehen haben, bleibt im Ergebins eine 1. Alle anderen Positionen werden auf 0 gesetzt.
    0 0 -> 0
    0 1 -> 0
    1 0 -> 0
    1 1 -> 1
    Code:
    E_ALL         : 011111111111
    ~E_CORE_ERROR : 111111101111
                    011111101111
    Das Ergebnis sieht aus wie E_ALL, bis darauf, dass das Bit von E_CORE_ERROR nicht mehr gesetzt ist.
    Und das jetzt mal für E_ALL&~E_STRICT
    Code:
    E_ALL     : 011111111111
    ~E_STRICT : 100000000000
                011111111111
    Es kommt wieder genau E_ALL bei raus - unsinnige Operation.

    Einen Kommentar schreiben:


  • HStev
    antwortet
    Zitat von Bruchpilot
    einfach nur E_ALL | E_STRICT
    must auch erklären wieso ... das Binäre Oder Vernknüpft die Werte so das die Bits gesetzt sind die in min. 1 der beiden Werte gesetzt sind deshalb

    E_ALL | E_STRICT

    ps:
    Ein + Funktioniert übrigens auch zum Anschalten
    E_ALL (2047) 011111111111 | E_STRICT(204 100000000000 = (4095) 111111111111

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Hoppla, vertippt!
    Nicht & sondern |

    zwar E_ALL&~E_STRICT (zum expliziten Abschalten)
    aber E_ALL | E_STRICT (zum "Anschalten")
    phpinfo() sollte dann bei error_reporting den Wert 4095 anzeigen.

    Einen Kommentar schreiben:


  • Zergling-new
    antwortet
    Danke für den Hinweis, auch für mich interessant.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Ok, alles klar. Danke!

    Einen Kommentar schreiben:

Lädt...
X