Severin Kacianka: OOP: Konstanten definieren, Klassen vereinbaren

Beitrag lesen

Hallo,

Eben. Allerdings würde ich vermuten, dass Konstanten in jedem Falle superglobal sind. Also keine korrekte Namensraumtrennung bei Konstanten möglich ist.

Das kann ich bestätigen:
<?php
define('BAR','Konst. Bar');

class foo{
    function foo(){
    }
    function return_konst(){
        return BAR;
    }
}
echo BAR;
$test = new foo();
echo $test->return_konst();
?>

Was geht, entscheidet immer noch der Parser. Wenn der sich nicht beschwert, wird es ok sein. Ich vermute aber, dass er sich beschwert. Man darf innerhalb von Funktionen ja auch keine Funktionen definieren.

Jein. Folgender Code:
<?php
function foo(){
    function bar(){
        return 'func:bar';
    }
    echo bar();
    return 'func:foo';
}

echo foo();
?>
wird 'func:barfunc:foo' ausgeben. Allerdings ist es nicht möglich die Funktion bar direkt aufzurufen. Ich meine, das hat damit zu tun, dass die Funktion nur im lokalen Scope von foo bekannt ist.

gruß,
Severin

--
Realität ist das, was nicht verschwindet, wenn man aufhört, daran zu glauben.
--Philip K. Dick