[OOP] Objektorientiert mit PHP global andere PHP Files einbinden - wie?

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

  • [OOP] Objektorientiert mit PHP global andere PHP Files einbinden - wie?

    Hi mich eigentlich recht gut in die Eigenarten von OOP bei PHP eingearbeitet und komm auch recht gut damit klar.

    Jetzt hab ich ein kleines Problem. Ich hab ne kleine php datei die alles zentral verwaltet z.B. die Mysql Logindaten Host, User und Passwort

    ich hab es jetzt zeitweise gelöst das ich in jede methode die dateien eingebunden hab mit include_once (anders hätte er sie u.u mehrmals geladen und das gab fehler )

    jetzt isses aber irgendwie so, dass ich zwar mit include_once die config.php angegeben hab in der methode allerdings sind, wenn ich die variablen mit echo ausgeben lasse, diese leer.

    gibts eine möglichkeit irgendwie in den klassen diese file 1 mal einzubinden und dann von allen methoden der klasse drauf zuzugreifen?
    oder sollte man es gänzlich anders lösen und die config.php verwerfen?

    so siehts aus
    PHP-Code:
    public function Testfunktion()
    {
         include_once 
    'config.php';
    }
    public function 
    Testfunktion2()
    {
         include_once 
    'config.php';

    für schnelle hilfe gute ratschläge wie ich es besser machen kann (so wie das aussieht MUSS es einfach besser gehen *gg *)wäre ich sehr dankbar

  • #2
    zeig mal bitte, was in der 'config.php' steht.

    Kommentar


    • #3
      im grunde nix großartiges

      $DBHost = 'localhost';
      $DBUser = 'root';
      $DBPass = 'root';
      $DBName = 'MeineDatenbank';

      und ein paar andere variablen

      Kommentar


      • #4
        und wie sprichst du die variablen bzw. die testfunktionen an?

        Kommentar


        • #5
          anscheinend kann ich mich noch schlechter ausdrücken als php programmieren

          also nochmal:

          ich hab eine config.php
          dort sind einfach nur variablen drin die im programmcode verwendet werden wie z.B. Mysql Benutzerdaten.


          PHP-Code:
          <?
                $dbhost = 'localhost';
                $dbuser = 'root';
                $dbpass = 'root';
          ?>
          Ne Beispiel klasse
          PHP-Code:
          class TestKlasse
          {
              public function 
          Funktion1()
              {
                  include_once 
          'config.php';
                  
                  
          $resource mysql_connect($dbhost$dbuser$dbpass)
                  
          //[Programmcode]
                  
          mysql_close($resource);
                  
          this->Funktion2();
              }
              public function 
          Funktion2()
              {
                  include_once 
          'config.php';
                  
          $resource mysql_connect($dbhost$dbuser$dbpass)
                  [
          verarbeitung]
                  
          mysql_close($resource);
                  
              }

          die methoden werden natürlich mit objekten der klasse aufgerufen
          und zwar aus anderen php dateien.

          PHP-Code:
          <?
              include_once 'TestKlasse.php';

              $objekt = new Testklasse();
               $objekt->Funktion1:
          ?>
          so kurze erklaerung noch, muss jetzt ohne umlaute schreiben, weil ich irgendwie aufm notebook altgr irgendwas gedrueckt hab und das tastaturschema geaendert auf amiland geaendert hab und es nimmer zurueck auf deutsch krieg auch net ueber die einstelllungen.
          aber zurueck zum thema.

          der sinn und zweck meiner funktionen ist das eine aufgerufen wird etwas aus der datenbank fischt und in eine containerklasse in deren attribute speichert (hier nicht aufgefuehrt) eines dieser attribute ist aber ein array welches weitere daten beinhaltet und da durch die zweite funktion aufgerufen wird die den rest aus der db liesst (is natuerlich etwas komplizierter sodass es schon nen sinn macht zwei funktionen zu benutzen)
          wie man jetzt sieht sind in beiden die config.php eingebunden.

          was mich jetzt aber wundert ist, 1. aufm privat notebook kommt jetzt ne ganz andere fehlermeldung (sql syntax sei falsch obwohl er 1:1 kopiert im phpmyadmin funzt) 2. aufm firmen rechner sind die variablen aus der config.php in der zweiten funktion leer.

          daher meine frage kann man die irgendwie global einbinden das sie in der ganzen klasse verwendbar sind...

          ich hoffe dieser beispiel code kann ausreichend verdeutlichen wo ich haenge.

          Kommentar


          • #6
            vielleicht so?

            PHP-Code:
            // in deiner config.php:
            class irgendwas
            {
            var 
            $eins "irgendwas";
            var 
            $zwei "irgendwer";
            var 
            $drei "irgendwo";
            }

            //zugriff auf die variablen von wo anders:
            include_once "config.php";
            $text = &new irgendwas;

            echo 
            $text->eins;
            //usw. 

            Kommentar


            • #7
              möglich wäre auch, mit sessions zu arbeiten und die variablen als
              session-variablen zu speichern. dann stehen sie dir überall zur verfügung.

              Kommentar


              • #8
                man könnte auch einfach konstanten draus machen
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  du könntest es natürlich auch als Parameter an den Konstrutor übergeben.

                  include_once 'config.php';


                  $objekt = new DBClass($dbserver,$dbport, $dbname, $dbuser, $dbpass);
                  $objekt->connect():
                  Ein Barmer ist kein Armer !!!

                  Kommentar


                  • #10
                    ich wuerde auch zu konstanten raten oder ein konfigurationsobjekt als singleton erstellen und die instanz in den konstruktoren der anderen klassen beziehen (wobei du von den aufrufen her dann genauso weit bist wie vorher, nur ohne die datei jedes mal laden zu muessen).

                    am sinnvollsten waere es natuerlich die configuration aufzuteilen. sicherheitssensitive daten wie die db-verbindungsinformationen wuerde ich einzeln speichern, nur im db-layer laden und direkt danach vernichten. andere daten per constant oder im oben angesprochenen singleton ablegen.
                    1101100 1101001 1100110 1100101 1101001 1110011 1100001 1100010 1101001 1110100 1100011 1101000

                    /(bb|[^b]{2})/

                    Kommentar


                    • #11
                      ich hab mich für das konfigurationsobjekt entschieden
                      das besitzt private attribute und get methoden so is das umschreiben auch net möglich

                      funktioniert ganz gut
                      danke für die hilfe

                      Kommentar

                      Lädt...
                      X