Gültigkeitsbereich von Defines

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

  • Gültigkeitsbereich von Defines

    Hallo Kinder,

    ich hab ein Problem mit Defines. Die sind nämlich plötzlich in inkludierten Dateien nicht mehr definiert...

    Also ich definiere z.B. IDONTCARE mit define('IDONTCARE', true) aber wenn ich darauf in einer inkludierten Datei zugreifen möchte, Dann geht das plötzlich nicht mehr.

    Liegt das Problem evtl hier?:
    in index.php:
    -> define('IDONTCARE', true)
    -> include('irgendwas.php')

    in irgendwas.php:
    -> include('defines.php')
    -> include('test.php')

    In defines.php ist IDONTCARE noch existent. Dort mache ich ein paar weitere Definitionen und plötzlich ist IDONTCARE in test.php unbekannt.


    Ich hoffe mein Erklärungsstil wirft keine unnötigen Fragen auf,...
    ... die Nötigen aber schon ...

    so long
    - Paul
    Zuletzt geändert von idontcare; 06.01.2006, 13:05.

  • #2
    Dann würde ich dir empfehlen den Code Zeile für Zeile durchzugehen und Testausgaben zu machen. Irgendwo muss der Wert der Konstanten ja "verloren" gehen.defined() könnte Dir dabei helfen.
    Oder auch get_defined_constants()
    Gruss

    tobi
    Zuletzt geändert von jahlives; 06.01.2006, 13:08.
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      das sowas überhaupt verlorengehen kann ist mir neu

      Kommentar


      • #4
        Drum "verloren" und nicht verloren
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          stellt sich die Frage, ob Konstanten, die nicht durch get_defined_constants() aufgelistet werden verloren oder "verloren" gegangen sind.

          ich such nochmal wo sie "verloren"/verloren gehen und editier den beitrag hier...

          EDIT:
          datei1.php: (in http://localhost/ordner/)
          -> include('defines.php') # da definiere ich PATH als "http://localhost/ordner/classes/"
          -> IDONTCARE existiert
          -> nächste Zeile: include(PATH.'datei2.php')

          datei2.php:
          -> IDONTCARE nicht definiert

          wenn ich keinen absoluten Pfad bei include benutze, sondern './classes/', dann funktionierts
          Zuletzt geändert von idontcare; 06.01.2006, 16:19.

          Kommentar


          • #6
            Gemäss Man sollten die Const nicht "verloren" gehen dürfen:
            Eine Konstante ist ein Bezeichner (Name) für eine simple Variable. Wie der Name schon ausdrückt, kann sich der Wert einer Konstanten zur Laufzeit eines Skripts nicht ändern (eine Ausnahme bilden die Magischen Konstanten, die aber tatsächlich keine Konstanten sind.) Eine Konstante unterscheidet zwischen Groß- und Kleinschreinbung (case-sensitive). Nach gängiger Konvention werden Konstanten immer in Großbuchstaben geschrieben.
            Schreib mal am Anfang von test.php
            PHP-Code:
            print_r(get_defined_constants()); 
            Gruss

            tobi
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              Original geschrieben von idontcare
              wenn ich keinen absoluten Pfad bei include benutze, sondern './classes', dann funktionierts
              PHP 'vergißt' Konstanten nicht, im Code kann man sie weder ändern noch löschen ... war also dein Fehler und wenn der Pfad das einzige ist, was du geändert hast, war der vorher falsch i.S.v. 'weiß der Geier was du da included hast'.

              Kommentar


              • #8
                Original geschrieben von idontcare
                # da definiere ich PATH als "http://localhost/ordner/classes"
                -> nächste Zeile: include(PATH.'datei2.php')
                was soll denn auch der scheiß? Selten, dass man über einen Wrapper includieren will >_>

                Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                Wie man Fragen richtig stellt

                Kommentar

                Lädt...
                X