frage zum include in einer include-datei

  • hoistens ;)

    also um dat ma kurz zu machen:
    wie läuft des bei nem include wo ein weiteres include drin vorkommt genau? wird da der aktuelle pfad genommen und von da aus dann includiert?

    also sagen wir ich hab ne functions.php und ne class.userprofile.php

    die class-file included die functions.php und diese classfile wird dann später von der index.php included-
    ungefähr so:

    class.userprofile.php
    |
    ../includes/functions.php


    und dann:

    index.php
    |
    /classes/class.userprofile.php
    |
    Pfad?!?!/includes/functions.php

    ordnerstruktur ist:
    root
    /classes
    /includes

    irgendwie hab ich das gefühl, dass mir die includes so zerkloppt werden, da ich scheinbar als ausgangsordner den root-folder habe für die functions.php.
    dachte bisher, dass man immer relativ vom includierenden element ausgeht.
    oder is es hier zwingend nötig mit einem absoluten pfad zu agieren?

  • Immer der Pfad von der Datei die aufgerufen wurde. Wie du die Includes verschachtelst spielt dabei keine Rolle.

    Wenn du /index.php hast und dort /content/module.php includest bleibt dein pfad immer noch / (usw. usw.)

    /edit: demnach ist "../includes/functions.php" falsch und müsste so aussehen "includes/functions.php"

    //p.s. komm doch ins ICQ du pfeife ;P

    Einmal editiert, zuletzt von Grevas (10. Mai 2010 um 10:52)

  • Ich löse das häufig mit ein paar defines in meiner config

    PHP
    define ('CLASS_PATH', $_SERVER['DOCUMENT_ROOT'] . "/classes");
    define ('INCLUDE_PATH', $_SERVER['DOCUMENT_ROOT'] . "/includes");


    Somit hat man immer Zugriff auf die richtigen Verzeichnisse

  • define definiert eine Konstante, also eine Variable, die nicht umdefiniert werden kann. Sie hat jedoch die Eigenschaft, dass sie wie ein String aussieht und deshalb auch nicht zwischen Anführungszeichen stehen darf. Ich glaube, das war zu umständlich erklärt, aber hoffentlich versteht man trotdzem, was ich meine. Also

    PHP
    include(INCLUDE_PATH.'/functions.php');

    Information will frei verfügbar sein.

    Don't eat unpeeled hedgehogs.

  • oh, dachte auch erst ich hätt oben doublequotes genommen, da kann man ja in der regel auch variablen mit reinschreiben..

    ok also dann probiere ich das mal..
    sollte sich die letzte frage in meinem kopf als stellenswert erweisen, meld ich mich nochmal :)

  • oh, dachte auch erst ich hätt oben doublequotes genommen, da kann man ja in der regel auch variablen mit reinschreiben..


    Variablen ja, aber mit definierten Konstanten funktioniert das nicht.

  • auch nice 2 know..
    klappt soweit alles mit den includes. danke!
    derzeit verschwindet halt mittendrin ne variable aus meiner session...
    naja ich eruiere mal was da vor sich geht