[gelöst] PHP Autoload + GLOBAL

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

  • #16
    1. die genannte Meldung gibts nicht.
    2. Logger kann man auch über Setter-Injection verteilen
    3. Ebenso irgendwelche "welche Klasse nehme ich denn jetzt" Entscheider
    4. globale Variablen sind böse
    5. __autoload ist unnötig einschränkend. SPL Autoload ist universeller
    6. "freie" Konstanten erhöhen die Abhängigkeiten

    Alles in allem:
    Ich kann da wenig modernen Programmierstil ausmachen. Ehr ein starkes Beharrungsvermögen.
    Wir werden alle sterben

    Kommentar


    • #17
      Zitat von onemorenerd Beitrag anzeigen
      Genau das ist der Grund zum Branchen. Wenn ich eine Software habe und dann ein Kunde spezielle Anpassungen bekommen soll, mache ich einen Branch/Fork des ganzen Projekts. Du machst den Branch zur Laufzeit. Ich will mir gar nicht ausmalen wie sich dein Code entwickelt, wenn dein Kundenstamm wächst oder wie deine Unit Tests aussehen. Aber wenn du meinst das ist schon in Ordnung so, dann mach halt weiter wie gehabt.
      Ich weiß ja was du meinst....aber anscheinend nicht was ich meine ;-)

      2 Kunden --> arbeiten auf einer Datenbank --> Felder können sich ändern (Oberfläche + Datenbank) --> letzter Branch nicht mehr gültig ....

      @combie:
      2. Danke
      3. wie bereits gesagt: macht bei uns derzeit Sinn, wird auch nur temporär verwendet
      4. Ist richtig, diese globalen sind aus früheren Tagen noch übrig und kann man nicht von heute auf morgen entfernen (Da an diesem Projekt seit 4 Jahren gearbeitet wird, ist noch nicht alles auf dem neuesten Stand)
      5. Danke, kannte ich leider noch nicht.
      6. Da hast du recht.


      Ich finde es aber erschreckend, wie ihr von 20 Zeilen Code heraus Urteilt die teilweise nur temporär sind oder in der Entwicklung und meint ihr könnt sagen ob mein Code schlecht oder gut ist....

      Ich würde gerne mal gerne eure Projekte ganz sehen und dann ziehe ich auch irgendwo Codeschnipsel hervor die nicht Konventionen oder einem Stil entsprechen.....

      Alles in allem:
      Ich kann da wenig Zielorientierung bei euren Antworten finden. Eher findet man sehr viel Abwertungen und Überschätzungen in den Antworten...
      Zuletzt geändert von ThaDafinser; 03.11.2009, 14:37.

      Kommentar


      • #18
        Zu deinem Problem gibt es ja nicht viel zu sagen. Die von dir zitierte Fehlermeldung gibt PHP nie aus. Ich nehme an du meinst undefined variable. Die Ursache dafür ist - trommelwirbel - eine nicht definierte Variable. Also entweder existiert die Variable überhaupt nicht oder zumindest nicht im aktuellen Scope. Beides lässt sich ganz einfach überprüfen. Problem gelöst. Nun können wir uns wieder den strukturellen Problemen zuwenden.

        2 Kunden --> arbeiten auf einer Datenbank --> Felder können sich ändern (Oberfläche + Datenbank) --> letzter Branch nicht mehr gültig ....
        --> letzten Branch (oder Trunk) anpassen!

        Kommentar


        • #19
          Zitat von onemorenerd Beitrag anzeigen
          --> letzten Branch (oder Trunk) anpassen!
          1. = Doppelte Arbeit = Doppelte Zeit = unwirtschaftlich(er) (je nach Fall, aber das ist ein anderes Thema)
          2. Arbeiten beide Kunden auf der gleichen Url und daher auch auf den gleichen Sourcen...(die Kunden sind in der Datenbank hinterlegt....und ich bitte jetzt darauf keine Frage "Warum liegen die da" --> hat einfach einen Grund und möchte nicht noch mehr von meinem eigentlichen Problem abschweifen )

          "Mein" Problem
          Das ist mir klar, das die "Variable" nicht existiert!
          Aber wie ich geschrieben habe (ganz am Anfang), scheint es je nach PHP Einstellung, das er die PHP Variable in diesem Raum kennt oder nicht --> Also einen Fehler auswirft oder nicht.
          Eigentliche Frage dazu
          Wenn jemand diese Einstellung kennt, oder eine Ahnung hat woran es liegen könnte, dann wäre ich sehr dankbar für eine Antwort.
          D.h: Es scheint neben error_reporting() noch eine 2te Einstellung zu geben, die diese Fehlermeldung steuert.

          Antworten die nichts zum eigentlich Problem beitragen sind damit eigentlich für alle Zeitverschwendung....
          Zuletzt geändert von ThaDafinser; 03.11.2009, 15:28.

          Kommentar


          • #20
            Man könnte sich auch mal anschauen, wie andere das Problem angegangen sind.

            Z.B. Doctrine geht da einen eigenen Weg.
            Doctrine ORM for PHP - Migrations
            Ob der schön ist, ist eine Sache, aber recht tragfähig ist er.

            --------------

            Eigentliche Frage dazu
            Wenn jemand diese Einstellung kennt, oder eine Ahnung hat woran es liegen könnte, dann wäre ich sehr dankbar für eine Antwort.
            D.h: Es scheint neben error_reporting() noch eine 2te Einstellung zu geben, die diese Fehlermeldung steuert.

            Antworten die nichts zum eigentlich Problem beitragen sind damit eigentlich für alle Zeitverschwendung....
            Wenn du die Antworten nicht ließt, das ist "Zeitverschwendung" !!!


            'In Posting #6 habe ich dir die Zweite Einstellung genannt:
            http://www.php-resource.de/forum/fra...tml#post628270

            Und die phpinfo() Ausgabe der beiden Systeme wirst du doch wohl eigenständig vergleichen können, oder?
            Warum tust du das dann nicht?
            Wir können das nicht.
            Zuletzt geändert von combie; 03.11.2009, 15:34.
            Wir werden alle sterben

            Kommentar


            • #21
              Zitat von ThaDafinser Beitrag anzeigen
              scheint es je nach PHP Einstellung, das er die PHP Variable in diesem Raum kennt oder nicht --> Also einen Fehler auswirft oder nicht
              PHP kennt die Variable oder kennt sie nicht. Da gibt es keine Unterschiede zwischen verschiedenen Versionen/Installationen/Konfigurationen. Die Ausgabe von Fehlermeldungen ist aber konfigurationsabhängig.
              Zitat von ThaDafinser Beitrag anzeigen
              D.h: Es scheint neben error_reporting() noch eine 2te Einstellung zu geben, die diese Fehlermeldung steuert.
              display_errors? Aber du hast ja schon alle Einstellungen verglichen, das kanns also nicht sein.

              Kommentar


              • #22
                Dachte ich ja bisher auch....
                Da die Variable aber bei einer Installation existiert und man den Wert auch ausgeben kann und auf der anderen nicht, also scheint es doch Unterschiede zu geben...


                Villeicht kann sich noch der ein oder andere an so etwas erinnern:
                $_GET['var']
                $_GET[var] <- war so viel ich weiß in den Urzeiten auch möglich...zwar nicht ganz richtig, hat aber je nach PHP Einstellung funktioniert...

                Kommentar


                • #23
                  Zitat von ThaDafinser Beitrag anzeigen
                  DVilleicht kann sich noch der ein oder andere an so etwas erinnern:
                  $_GET['var']
                  $_GET[var] <- war so viel ich weiß in den Urzeiten auch möglich...zwar nicht ganz richtig, hat aber je nach PHP Einstellung funktioniert...
                  Das geht auch heute noch. var ist hier eine Konstante. Wenn diese Konstante nicht existiert, behandelt PHP es als String und schmeißt nebenbei eine Fehlermeldung der Stufe Notice.

                  Kommentar


                  • #24
                    Da die Variable aber bei einer Installation existiert und man den Wert auch ausgeben kann und auf der anderen nicht, also scheint es doch Unterschiede zu geben...
                    Häää... in den Einstellungen? Welche das erstellen von globalen Variablen verhindert? Nein!
                    Bisher dachte ich, du hast ein Problem mit Meldungen.....

                    Hast du gar nicht!
                    Du hast ein grundsätzliches Verständnis Problem.

                    Testcode:
                    PHP-Code:
                    <?php
                    error_reporting
                    (-1);
                    ini_set('display_errors'TRUE);
                     
                    function 
                    test()
                    {
                      global 
                    $testvar// deklariert die Variable
                      
                    echo $testvar;   // wirft darum auch keine Meldung
                    }

                    echo 
                    $testvar// wirft Meldung, da Variable nicht existiert
                    test();        // rufe Funktion mit Seiteneffekt
                    echo $testvar// wirft keine Meldung, 
                                   // da die Variable in der Funktion deklariert wird
                    Also nochmal: Verzichte auf globale Variablen, um genau solchen unerwünschten Seiteneffekten aus dem Wege zu gehen.
                    Zuletzt geändert von combie; 03.11.2009, 16:29.
                    Wir werden alle sterben

                    Kommentar


                    • #25
                      Zitat von ThaDafinser Beitrag anzeigen
                      "Mein" Problem
                      Das ist mir klar, das die "Variable" nicht existiert!
                      Aber wie ich geschrieben habe (ganz am Anfang), scheint es je nach PHP Einstellung, das er die PHP Variable in diesem Raum kennt oder nicht --> Also einen Fehler auswirft oder nicht.
                      Eigentliche Frage dazu
                      Wenn jemand diese Einstellung kennt, oder eine Ahnung hat woran es liegen könnte, dann wäre ich sehr dankbar für eine Antwort.
                      Wie wäre es, wenn du die beiden INI-Dateien selbst vergleichst und nach Unterschieden suchst? Schließlich bist du der einzige hier, der Zugriff darauf hat. Es gibt da so ein nettes Tool namens diff ...

                      Einfach so ins Blaue hinein geraten, würde mir jetzt nur register_globals einfallen. Diese Einstellung auf "on" erzeugt globale Variablen, wenn dem Script entsprechende Parameter übergeben wurden. Aber dass das noch jemand freiwillig angestellt hat, kann ich mir nicht vorstellen.
                      Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

                      Kommentar


                      • #26
                        Zitat von fireweasel Beitrag anzeigen
                        Einfach so ins Blaue hinein geraten, würde mir jetzt nur register_globals einfallen. Diese Einstellung auf "on" erzeugt globale Variablen, wenn dem Script entsprechende Parameter übergeben wurden. Aber dass das noch jemand freiwillig angestellt hat, kann ich mir nicht vorstellen.
                        Dass jemand, der hier sein Vorgehen und seinen Code so vehement gegen kritische Argumente verteidigt, nicht mal über diese Problematik Bescheid weiss, kann ich mir fast noch weniger vorstellen ...
                        (Denn sonst hätte er einen darin begründeten Fehler eigentlich schon vor dem Fragen selber finden müssen.)
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #27
                          @combie:
                          1. Danke für deine Antworten, haben mir teilweise weitergeholfen (speziell Doctrine ORM ist sehr interessant)
                          Display Error ist schon lange bei beiden drinnen.
                          2. zu den Variablen: Das ist mir schon klar, mit Lokalen Variablen etc...,ich programmiere auch nicht erst seit gestern... (ansonsten wäre das ziemlich schlimm)
                          Wenn du meinen ersten Post gelesen hast:
                          Das Problem ist nun:
                          Bei der Switchanweisung ist eine Variable, die bei __autoload nicht global ist --> müsste generell einen Fehler auswerfen!
                          @fireweasel:
                          Die beiden INI hab ich zuvor verglichen bzw. die vermeindlich "falsche" ersetzt. Weshalb der Fehler noch dubioser wird...

                          Zitat von wahsaga Beitrag anzeigen
                          Dass jemand, der hier sein Vorgehen und seinen Code so vehement gegen kritische Argumente verteidigt, nicht mal über diese Problematik Bescheid weiss, kann ich mir fast noch weniger vorstellen ...
                          (Denn sonst hätte er einen darin begründeten Fehler eigentlich schon vor dem Fragen selber finden müssen.)
                          Ist eine Möglichkeit.
                          Die andere wäre einfach, das man von Posts über Antworten auf Fragen die man gar nicht gestellt hat bekommt genervt wird und von der eigentlichen Frage abweicht.

                          Wenn du in die Werkstatt gehst und einem Mitarbeiter fragst: "Mein Auspuff ist kaputt, könnte man den reparieren?" und er nur sagt "Wir könnten dir einen Chip einbauen, dann läuft dann Auto schneller. Ahh und dein Autoradio ist ja auch von gestern, da hätten dir ein super neues Model und erst deine Klimaanlage.....".
                          Du eigentlich nur bezüglich deinem Auspuff gefragt hast und er gar nicht mehr darauf reagiert, würdest du dich auch nicht freuen ;-)

                          Naja, lassen wir jetzt mal das Thema und danke vorläuftig für die teilweise Konstruktive Hilfe zum eigentlichen Problem.
                          Zuletzt geändert von ThaDafinser; 04.11.2009, 07:53.

                          Kommentar


                          • #28
                            Gebracht hats aber nichts oder wie ist da jetzt der Stand?

                            Kommentar


                            • #29
                              Kann ich dir erst morgen / übermorgen sagen, wenn der 2te PC wider in betrieb ist ....

                              Kommentar


                              • #30
                                Zitat von ThaDafinser Beitrag anzeigen
                                Ist eine Möglichkeit.
                                Die andere wäre einfach, das man von Posts über Antworten auf Fragen die man gar nicht gestellt hat bekommt genervt wird und von der eigentlichen Frage abweicht.
                                Das würde bedeuten, dass "man" - du - an einer Diskussion, die das eigene Weltbild erweitern könnte, gar nicht interessiert ist, und das "man" - du - unbedingt auf seiner Denkweise beharren will, auch wenn sie aus Sicht erfahrener Leute Fehler aufweist.

                                Wenn du in die Werkstatt gehst und einem Mitarbeiter fragst: "Mein Auspuff ist kaputt, könnte man den reparieren?" und er nur sagt "Wir könnten dir einen Chip einbauen, dann läuft dann Auto schneller. Ahh und dein Autoradio ist ja auch von gestern, da hätten dir ein super neues Model und erst deine Klimaanlage.....".
                                Du eigentlich nur bezüglich deinem Auspuff gefragt hast und er gar nicht mehr darauf reagiert, würdest du dich auch nicht freuen
                                Und wenn du mit dem Auto durch die TÜV-Prüfung willst, und dann merkst, dass die Werkstatt zwar den kaputten Auspuff repariert hat - sich aber um alles andere vom nicht funktionierenden Blinker bis zu den schleifenden Bremsen nicht gekümmert hat ... dann bist du natürlich happy, weil sie genau das gemacht haben, wonach du gefragt hast, und kein bisschen mehr. Dass das ingesamt betrachtet ein reichlich unsinniges Vorgehen war, willst du unbedingt erst später merken ...
                                I don't believe in rebirth. Actually, I never did in my whole lives.

                                Kommentar

                                Lädt...
                                X