Simon: ophp problem mit attributen und so

Hi,
ich führe in einer methode eines objektes eine includete Funktion aus. nun müsste ich von innerhalb dieser funktion auf ein attribut des objekts zugreifen, ohne das ganze im funktionsaufruf mitzugeben... wie geht das?

bsp:

//-----------------------------------------//

<?
class foo
{
var $bar = "hallo Welt";

function a()
{
// hier wird nun die datei "b.php" mit der funktion "b()" includet und ausgeführt
}
}
?>

//-----------------------------------------//

datei "b.php"
<?
function b()
{
echo $this->bar; // das geht bei mir hald eben nicht... ='[
}
?>

//-----------------------------------------//

Gruß ... der Simon

  1. Hallo Simon!

    class foo
    {
    function a()
    {
    // hier wird nun die datei "b.php" mit der funktion "b()" includet und ausgeführt
    [...]
    function b()
    {
    echo $this->bar; // das geht bei mir hald eben nicht...
    }

    Ähm, Du includierst _innerhalb_ der Funktion a die Datei b.php?

    Das sieht mir irgendwie "komisch" aus ... Du kannst ja die Funktion b in der Funktion a aufrufen, aber sie in a zu definieren ist imho nicht so sehr sinnvoll, das kann ich aber mangels genaueren Informationen nicht so ganz beurteilen.

    Diese "komische Schachtelung" ist im Moment das einzige, was mir an Deinem Code auffällt, aber soo gut kenn ich mich mit _OOP_ in PHP auch nicht aus.

    MfG
    Götz

    --
    Losung und Lehrtext für Mittwoch, 28. Januar 2004
    Der Herr ist der wahrhaftige Gott, der lebendige Gott, der ewige König. (Jeremia 10,10)
    Pilatus fragte Jesus: Bist du der König der Juden? Er aber antwortete und sprach zu ihm: Du sagst es. (Markus 15,2)
    (http://www.losungen.de/heute.php3)
    1. Hello,

      Ähm, Du includierst _innerhalb_ der Funktion a die Datei b.php?

      Das ist dann ein bedingtes include. Nur wenn die Funktion aufgerufen wird, wird die Datei includiert. Wenn die includierte Datei nun Funktionen oder Konstanten enthält, könnte es einen redefine error geben, da PHP für Funktionen bisher keine Namensbereiche kennt. Die einzige Abgrenzung war bisher die Klasse. dann müsste man aber für jeden Durchlauf eine neue Klasse definieren.

      In PHP 5 wird das endlich alles besser.

      Liebe Grüße aus http://www.braunschweig.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      1. Hallo Tom!

        Das ist dann ein bedingtes include. Nur wenn die Funktion aufgerufen wird, wird die Datei includiert. [...]

        Ja, das war mir schon klar, nur die Verschachtelung der Funktionen ineinander hat mich gewundert und das fand ich nicht unbedingt sinnvoll.

        MfG
        Götz

        --
        Losung und Lehrtext für Mittwoch, 28. Januar 2004
        Der Herr ist der wahrhaftige Gott, der lebendige Gott, der ewige König. (Jeremia 10,10)
        Pilatus fragte Jesus: Bist du der König der Juden? Er aber antwortete und sprach zu ihm: Du sagst es. (Markus 15,2)
        (http://www.losungen.de/heute.php3)
        1. Hello,

          Hallo Tom!

          Das ist dann ein bedingtes include. Nur wenn die Funktion aufgerufen wird, wird die Datei includiert. [...]

          Ja, das war mir schon klar, nur die Verschachtelung der Funktionen ineinander hat mich gewundert und das fand ich nicht unbedingt sinnvoll.

          Da hast Du bestimmt Recht.
          Die Verschachtelung von Funktionen sit bei PHP < 5 auch extrem gefährlich. Beim ersten Durchlauf geht nämlich alles gut und wenn die Wrapper-Funktion dann das zweite Mal aufgerufen wird, gibt es den redefine error für die geschachtelte Funktion.

          Böse, böse.

          Sowas darfm nan nur schreiben, wenn man gaaanz genau weiss, was man tut. Also vorher nachfragen, ob die Funktion oder Konstante bereits definiert ist

          Liebe Grüße aus http://www.braunschweig.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen